是否轉換爲字符串(即.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