web-dev-qa-db-ja.com

大きなhprofをjhatにロードする

-XX:-HeapDumpOnOutOfMemoryErrorオプションを使用して64ビットJVMによってダンプされた6.5GBのHprofファイルがあります。私はそれを16GB64ビットマシンに置いて、jhatに入れようとしていますが、メモリが不足し続けています。最小設定のためにjvmargsを渡そうとしましたが、最小値を拒否し、最大値に達する前にメモリが不足しているようです。

メモリが不足しているjvmがヒープを非常に大きくダンプするため、RAMが2倍のボックスにロードできないのはちょっとばかげているようです。これを実行する方法、または分析を償却する方法はありますか?

25
liam

Eclipseメモリアナライザ を見てみましょう。このツールは素晴らしいです、そして私はこのツールでいくつかのギグヒープを見てきました。このツールの良いところは、ダンプにインデックスを作成するため、一度にすべてがメモリに保存されるわけではないことです。

21
broschb

Jhatを起動するコマンドとしてjhat -J-d64 -J-mx16g myheap.hprofに相当するものを使用します。つまり、これにより、最大ヒープサイズが16ギガバイトの64ビットモードでjhatが起動します。

プラットフォームのJVMがデフォルトで64ビットモードの操作になっている場合は、-J-d64オプションは不要です。

22
Joel Hoff

11 GBのhprofファイルをロードする必要があり、Eclipseメモリアナライザーではロードできませんでした。私がやったことは、インスタンス情報をランダムに削除することによってhprofファイルのサイズを縮小するプログラムを書くことでした。 hprofファイルのサイズを1GBに下げたら、Eclipseメモリアナライザーでファイルを開いて、メモリリークの原因を知ることができました。

4
vimil