2012-01-03 5 views
-1

ストリング(つまりtoString())に変換すると、メモリが大量に消費されたり、メモリリークが発生しますか?私は単純なテキストにpdfテキストを解析しているときに、私のプログラムが多くのメモリを消費していると思いますが、これが理由であるかどうかは分かりません。toString()を使用中にメモリリークが発生する

PS:私はあなたが大規模なPDFファイルを持っている場合は、[はい、それは大量のメモリを消費しないPDFに

+1

「たくさんのメモリ」を定義します。 –

+0

メモリリークのように多くのメモリがある可能性があります – Rookie

+0

System.gc()を呼び出すとどうなりますか?それは記憶を解放するか?あなたのメソッドをもう一度呼び出すと、System.gc()をもう一度呼び出すとどうなりますか? –

答えて

2

を解析するための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/

+0

私はitextライブラリはこの手続きを可能にするとは思わない – Rookie

+1

@raghav私はitextで試したことはありませんが、確かに通常のJava操作を使用してPDFを分割することができます。 –

+0

例がありますか? – Rookie

1

を文字列へのsomethifnは通常、新しい文字列オブジェクトの割り当てを必要とします(これはメモリを消費します)。これがメモリリークを構成するかどうかは、toString()メソッドの実装に依存します。通常、メモリリークはありません。

1

あなたの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は次のとおりです。

http://pdfbox.apache.org/index.html

関連する問題