JRockit Memory Leak Detector ユーザーズ ガイド
![]() |
![]() |
![]() |
![]() |
メモリ リーク検出のためのイベントのフローとユーザ インタフェースの基本的な機能がわかったら、次は Memory Leak Detector の実際の働きを確認する番です。この節では、インタフェースの各タブについて詳しく説明しながら、実際にメモリ リークのある Java アプリケーションのモニタで Memory Leak Detector がどのように働くのかを見ていくことにします。
[Trend] タブ (図 3-1) でアプリケーションの分析を開始します。最も増大速度 (バイト数/秒) の大きいオブジェクト タイプが赤でマークされて [Trend Analysis - Which types are leaking?] テーブルの上部に表示されます。更新のたびに、このリストが変化して、最も増大速度の大きかったタイプがリストの下方に移動することがあります。図 3-1 にリストされているオブジェクト タイプは、サンプル アプリケーションから取得されたものです。赤でマークされたオブジェクトにメモリ リークがあると推測できます。
表 3-1 で [Trend] タブのテーブルの各列に何が表示されるかを説明します。
[Types] タブが表示されます (図 3-2)。さらに詳しい調査の方法については、「メモリ リークのあるオブジェクトを詳しく見るには」を参照してください。
メモリ リークと疑われるもの (増大速度が大きくて、赤でマークされているタイプ) を見つけたら、それをさらに [Types] タブで調査します (図 3-2)。そのためには、[Trend] タブでタイプを選択することによって調査を開始する必要があります (「調査を開始するには」を参照してください)。
[Types] タブには、調査対象のタイプを指しているすべてのタイプの間の関係が表示されます。タイプごとに数字も表示されます。これはそのタイプを指しているインスタンスの数です。
暗い赤は増大速度の大きいタイプを表しています (ただし、実際にメモリ リークに関係しているとは限りません)。
そのタイプがさらに展開されます (図 3-3)。
[Types] タブの [Instances] 部分が開きます。
選択したタイプのインスタンスがここにリストされます。表示されるインスタンスは、上のタイプ グラフで選択されたタイプからの矢印で示されているタイプへの参照を持っているものだけです。
図 3-5 [Types] タブの [Instances] リスト
リストがそれほど大きくなければ、タイプ B を指しているタイプ A のすべてのインスタンスがタブの下部に表示されます (図 3-5)。リストが大きすぎると、リストを表示しようとしたときに Memory Leak Detector がタイムアウトすることもあります。タイムアウトの設定は [File|Preferences] で変更することができます。
[Data kept alive (bytes)] 列には、それぞれのインスタンスが保持しているデータ量が表示されます。そのデータはガベージ コレクションできないものです。
ウィンドウの [Overview] 部分を開くと、グラフ内での位置を確認することができます (この操作については、「グラフを鳥瞰するには」を参照してください)。表示内容を拡大/縮小したり中央に配置したりすることもできます (これらのツールの説明は、表 2-2 を参照してください)。
[Instances] タブが表示されます (図 3-6)。
[Instances] タブ (図 3-6) には、メモリ リークが疑われるタイプのインスタンスが表示されます。矢印を見れば、具体的なフィールドの名前もわかります。インスタンスを右クリックすると、[Inspect Instance] オプションのあるポップアップ メニューが表示されます。このオプションを選択すると、そのオブジェクトに含まれているすべてのインスタンス変数が表示されます。この情報はリークのあるオブジェクトがアプリケーション内のどこにあるのか特定するのに役立ちます。
表 3-2 で [Instances] タブに表示できるものを説明します。
[Allocation Stack Traces] タブ (図 3-7) では、特定のタイプの割り当てがコード内のどこで行われたかをチェックできます。割り当てスタック トレースを有効にすると、JRockit のパフォーマンスが低下することもあります。すべての割り当てポイントについての情報を収集するのには、ある程度の時間がかかります。
図 3-7 [Allocation Stack Traces] タブ
Memory Leak Detector は、いろいろな点でカスタマイズすることができます。図 3-8 から図 3-13 までで、カスタマイズできる種々の設定について説明します。
[Preferences] ウィンドウが開きます (図 3-8)。
Memory Leak Detector を閉じるときに確認メッセージが表示されるようにしたい場合は、[Confirm Exit] オプションを選択します。
表示したい Java ヒープの使用率をここで設定します。設定した使用率に満たないタイプは表示されません。すべてのタイプを表示したい場合は、この値を 0 (ゼロ) に設定します。
タイプの [List Instances] でリストしたいインスタンスの数をここで設定します。このリストは [Types] タブの [Instances] 部分に表示されます。
[Number of Array Elements to fetch] では、取得される配列要素の数を指定します。[List Largest Arrays] を選択してある場合に、これらの要素が [Types] タブに表示されます。
![]() ![]() |
![]() |
![]() |