26

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

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

4

4 に答える 4

24

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

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

于 2010-12-03T00:51:42.077 に答える
22

私はEclipseのメモリアナライザーを見てみましょう。このツールは素晴らしく、このツールを使用していくつかのギグ ヒープを見てきました。このツールの優れた点は、ダンプにインデックスを作成するため、すべてが一度にメモリ内にあるわけではありません。

于 2009-12-02T21:58:55.743 に答える
5

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

于 2011-09-15T15:13:41.540 に答える
-2

jhat に渡すフラグは何ですか? 64 ビット モードで、十分な大きさのヒープ サイズを設定していることを確認してください。

于 2009-12-02T21:01:58.840 に答える