私が取り組んできたかなり大きなプロジェクトをデバッグしています(ただし、最初は作成していませんでした)OutOfMemoryError
。コードはファイルから大量のデータをロードしているため、これは一般的にまったく驚くべきことではありません。
しかし、私が混乱しているのは、プログラムのプロファイリングに VisualVM 1.3.4 を使用していて、動作に一貫性がないことです。私が実行したほとんどの場合、ヒープは徐々に約 2GB まで拡大し (コンピューターには 16GB の RAM が搭載されています。これは学術研究用です)、使用済みヒープがその下でどんどん高くなっていきます。2GB前後でクラッシュします。ただし、プログラムは時間の経過とともにそれ以上の情報を処理するわけではないため、わずか数分でヒープが 2GB に拡大することはありません。
ただし、約 30 秒後にヒープ サイズが 250MB で、約 100MB しか使用されていない状態で突然クラッシュすることがあります。java.lang.OutOfMemoryError: Java heap space
ヒープがいっぱいでない場合、どうすれば取得できますか?
編集:プログラムを実行するために Eclipse を使用しています。また、VisualVM プラグインを使用しているため、自動的に起動されます。また、Java 7 を使用しています。