3.2.2. ヒープダンプの分析

ヒープダンプ分析ツール

ヒープダンプを解析し、問題の特定を手助けするツールは多く存在します。Red Hat は、HPROF または PHD 形式でフォーマットされたヒープダンプを解析できる Eclipse Memory Analyzer ツール (MAT) の使用を推奨します。

Eclipse MAT の使用に関する詳細は、Eclipse MAT のドキュメント を参照してください。

ヒープダンプ解析のヒント

ヒープパフォーマンスの問題の原因が明白であることもありますが、アプリケーションのコードや、OutOfMemoryError のような問題を引き起こす状況を理解する必要があることもあります。これにより、メモリーリークの問題であるかまたはヒープのサイズが小さすぎるのかを特定することができます。

メモリー使用率の問題特定に推奨される方法には以下が含まれます。

  • メモリーを大量に消費している単一のオブジェクトが見つからない場合、クラスでグループ化して、多くの小さなオブジェクトが大量のメモリーを消費していないか確認します。
  • 最もメモリーを使用しているのが 1 つのスレッドであるかを確認します。これには、OutOfMemoryError によって引き起こされたヒープダンプが指定の Xmx 最大ヒープサイズよりも大幅に小さいかどうかを確認するとよいでしょう。
  • 通常の最大ヒープサイズを一時的に 2 倍にすると、メモリーリークをより検出しやすくなります。OutOfMemoryError の発生時、メモリーリークに関連するオブジェクトのサイズはヒープのサイズの約半分になります。

メモリー問題の原因を特定したら、ガベッジコレクションのルートからパスを確認し、オブジェクトが何によって維持されているかを確認します。