2012-02-06 11 views
2

私はPDFBOXで大きな問題に直面しています:私は10Mバイト(test.pdfという)のファイルをロードしようとしたと私はJVM上でそれをロードするために400 MBが必要:ここ コードサンプルです:PDFBOXのOutOfMemory

final File mainFile = new File(
      "C:/test.pdf"); 
    System.out.println("File size: " + mainFile.length()); 
    try { 
     PDDocument doc = PDDocument.load(mainFile); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    System.out.println("Used Memory: " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())); 
} 

これは正常ですか?

+0

40MBでもかまいませんか?あなたがやっている唯一の事柄なら、400はあまりにも多くのことです。 – Eugene

+0

ああ。それだけ。私はすべてのコードを印刷します – brianbro

+0

少なくとも、使用しているPDFBoxのバージョン、サンプルのコンパイル方法、使用しているオペレーティングシステムなどを提供する必要があります。 – ipavlic

答えて

2

いいえ、それは正常ではありません。

私は文書を閉じていないことに気づきました(必要です、documentationを読んでください)。おそらくそれは複数のランで蓄積されました。ドキュメントをロードする前にメモリ使用量についても言及していません。

+0

ここではいくつかのヒントを見つけることができます:https://pdfbox.apache.org/2.0/faq.html#outofmemoryrrror –