ストリング(つまりtoString())に変換すると、メモリが大量に消費されたり、メモリリークが発生しますか?私は単純なテキストにpdfテキストを解析しているときに、私のプログラムが多くのメモリを消費していると思いますが、これが理由であるかどうかは分かりません。toString()を使用中にメモリリークが発生する
PS:私はあなたが大規模なPDFファイルを持っている場合は、[はい、それは大量のメモリを消費しないPDFに
ストリング(つまりtoString())に変換すると、メモリが大量に消費されたり、メモリリークが発生しますか?私は単純なテキストにpdfテキストを解析しているときに、私のプログラムが多くのメモリを消費していると思いますが、これが理由であるかどうかは分かりません。toString()を使用中にメモリリークが発生する
PS:私はあなたが大規模なPDFファイルを持っている場合は、[はい、それは大量のメモリを消費しないPDFに
を解析するためのiTextを使用しています。私が見ることができる唯一のソリューションは、あなたの小さなものにあなたを分割し、それぞれの操作を実行することです。最後に、結果
を再編成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()メソッドの実装に依存します。通常、メモリリークはありません。
あなたのpdfを文字列に変換するためにitextを使用しないでください。 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は次のとおりです。
「たくさんのメモリ」を定義します。 –
メモリリークのように多くのメモリがある可能性があります – Rookie
System.gc()を呼び出すとどうなりますか?それは記憶を解放するか?あなたのメソッドをもう一度呼び出すと、System.gc()をもう一度呼び出すとどうなりますか? –