是否转换为字符串(即.toString())会消耗大量内存,甚至会导致内存泄漏?如果yes.then是否有任何方法来处理?我想当我解析PDF文本到简单的文本我的程序消耗大量的内存,不知道这是否是原因。内存泄漏使用toString()
PS:我利用iText来解析PDF
是否转换为字符串(即.toString())会消耗大量内存,甚至会导致内存泄漏?如果yes.then是否有任何方法来处理?我想当我解析PDF文本到简单的文本我的程序消耗大量的内存,不知道这是否是原因。内存泄漏使用toString()
PS:我利用iText来解析PDF
如果你有一个较大的PDF,然后是它消耗大量的内存。我能看到的唯一解决方案是将你的PDF分成更小的,然后在每一个上运行你的操作。最后,重组的结果
UPDATE:
在谷歌上搜索,我发现,你可以使用iText库拆分PDF,检查这些链接:
http://viralpatel.net/blogs/2009/06/itext-tutorial-merge-split-pdf-files-using-itext-jar.html
http://sanjaal.com/java/448/java-pdf/splitting-pdf-file-using-java-itext-api-into-multiple-pdfs/
转换字符串somethifn通常需要分配新的字符串对象(并且这会消耗内存)。这是否构成内存泄漏取决于toString()方法的实现。通常没有内存泄漏。
不要使用itext将您的pdf转换为字符串。如果您想从pdf中提取文本,请使用apache pdfbox库。 Itext并不是为此目的而设计的,尽管它是这样做的。
下面是一些代码,将让你开始..
public static String pdftoText(File file) {
PDFParser parser=null;
String parsedText = null;
PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
try {
parser = new PDFParser(new FileInputStream(file));
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = new PDDocument(cosDoc);
parsedText = pdfStripper.getText(pdDoc);
} catch (Exception e) {
// handle exception
} finally {
try {
if (cosDoc != null)
cosDoc.close();
if (pdDoc != null)
pdDoc.close();
} catch (Exception e) {
// handle excpetion
}
}
return parsedText;
}
我不什么会做你的记忆情况..尝试了这一点,看看是否有帮助。 URL是这里:
定义“大量的内存”。 – 2012-01-03 12:59:00
大量的内存在内存泄漏可能是 – Rookie 2012-01-03 12:59:35
当您调用System.gc()会发生什么?它释放内存吗?如果你再次调用你的方法,然后再次调用System.gc()会怎么样? – 2012-01-03 13:01:39