Memory Dump Diagnostic for Java™ は、Java ヒープにおいて、メモリー・リークの背後にある根本原因を診断するためのオフライン・ツールです。このツールは、WebSphere® Application Server が実行されている Java 仮想マシン (JVM) からのメモリー・ダンプ (ヒープ・ダンプ) に共通の形式を分析します。 メモリー・ダンプの分析の目標は、メモリー・リークの根本原因となっている可能性のある Java ヒープ内のデータ構造を識別することです。 またこの分析は、アプリケーションの Java ヒープ・フットプリントに大きく貢献するオブジェクト・グループの要約されたセットも識別します。 このツールは、メモリー不足問題が発生している実稼働環境のアプリケーション・サーバーからの、非常に大きなメモリー・ダンプを分析することができます。
メモリー・リークは、参照が必要なくなった後もオブジェクト参照が無意識に保留されている場合に、Java アプリケーション内で発生する場合があります。 この問題は、明示的にオブジェクトの割り振り解除を行う責任からプログラマーを解放するガーベッジ・コレクション・メカニズムが Java 言語に組み込まれていても、Java ガーベッジ・コレクション・プロセスによるメモリーの解放の妨げとなります。 大きく複雑な Java アプリケーションでは、メモリー・リークの診断は困難です。これは、Java ヒープ内に多数のオブジェクトが存在すること、および、それらのオブジェクト間の関係が複雑なことが原因です。
単一のダンプの分析、および 2 つのダンプの比較分析の 2 タイプの分析メカニズムが使用可能です。 このツールは、疑わしいデータ構造およびデータ型をリストし、メモリー・ダンプの内容を、対話式ブラウザーをベースにした Web アプリケーションに表示します。 このツールは、同様のオーナーシップ構造を持つデータ型の大きなセットをグラフィカルにレイアウトする、フットプリント分析を表示します。 このツールは、メモリー・ダンプの内容を参照用の対話式ツリー・ビュー、およびオブジェクトとデータ型の 2 つのテーブル・ビューに表示します。 ツリー・ビューによって、各オブジェクトに対して入力および出力されるすべての参照を探すことができ、また各データ構造内のメモリー・リークの疑いがあるコンテナー・オブジェクトの場所を表示できます。
オフラインでメモリー・ダンプを分析する方法は、メモリー・リークの根本原因を識別するためのオーバーヘッドの少ないメカニズムです。 このメカニズムは、大規模なアプリケーションが製品内またはストレス・テスト環境で実行され、メモリー・リークが頻繁に最初に検出される場合に特に適しています。
考えられるメモリー・リークの根本原因が示されます。
これらの状態はどちらも、大きな空き Java ヒープ・スペースがあるにもかかわらず発生するメモリー不足エラーです。したがって、Java 用メモリー・ダンプ診断ツールは、こうした状態の根本原因の検出には有効でない場合があります。