JRockit Memory Leak Detector ユーザーズ ガイド

     前  次    目次     
コンテンツの開始位置

メモリ リーク検出の開始

この節では、BEA JRockit Memory Leak Detector (以下、Memory Leak Detector) の起動手順とユーザ インタフェースについて説明します。内容は以下のとおりです。

 


メモリ リーク検出プロセスの概要

メモリ リーク検出プロセスには次の 3 つの段階があります。

  1. 傾向分析
  2. オブジェクト タイプの関係の調査
  3. インスタンスの調査

傾向分析では、絶えず更新されるオブジェクト タイプに関する情報を観察して、メモリが不審に増加しているオブジェクト タイプを見つけます。このようなオブジェクト タイプは、メモリ リーク検出プロセスの次の段階で調査の対象となります。傾向分析テーブルの情報は 10 秒ごとに更新されるか、あるいはガベージ コレクションが非常に頻繁に行われる場合はもっと高い頻度で更新されます。

オブジェクト タイプの関係の調査では、オブジェクト タイプの間の参照パスを追跡調査します。増大しているオブジェクト タイプの関係で注目すべきものを探し、その関係に関わるオブジェクト タイプを見つけることが目的です。メモリが異常に増加しているオブジェクト タイプが見つかったら、メモリ リーク検出プロセスの 3 番目の段階に進みます。

インスタンスの調査では、異常なメモリ サイズのインスタンスや、異常な数の参照があるインスタンスを見つけて、そのインスタンスを調べます。インスタンスを調べる際には、フィールド名、フィールドの型、フィールド値などの値が表示されます。これらの値を利用して、アプリケーション コード内で正確なエラーの場所を探します。つまり、その特定のオブジェクト タイプの特定のインスタンスが割り当て、変更、または削除されている場所です (状況の示す内容によって異なります)。不審なインスタンスに関わる部分にまで問題の場所を絞り込んでいくと、メモリ リークを起こしている実際の問題をうまく見つけ出して、その問題を修正することができます。

 


Memory Leak Detector の起動

Memory Leak Detector とアプリケーションを起動する前に、管理サーバを起動する必要があります。

  1. BEA JRockit JVM で Java アプリケーションを通常どおりに起動します。ただし、コマンドラインに -Xmanagement オプションを追加します。
  2. コマンド ウィンドウに memleak と入力して、Memory Leak Detector を起動します。
    [Connect to JRockit] ウィンドウが表示されます。
  3. [Server name] にサーバの名前を入力します。これはモニタする対象のアプリケーションおよび JRockit が実行されているコンピュータの名前 (または IP アドレス) です。
  4. [Port] にポート番号を入力します。
  5. ポートの詳細については、『Management Console ユーザーズ ガイド』
    http://edocs.bea.com/jrockit/tools/usingjmc/start.html#wp1035010 (JRockit 5.0 用) または
    http://edocs.bea.com/jrockit/tools/usingjmc142/mancons.html#wp1001904 (JRockit 1.4.2 用) を参照してください。

  6. [Connect] をクリックします。
  7. Memory Leak Detector のウィンドウが開きます (図 2-1)。

JMX 認証

次の 2 つのシステム プロパティを設定することによって、認証を有効にできます。

認証を有効にするには、これらのプロパティを Memory Leak Detector の起動時に設定する必要があります。たとえば、次のように指定します。

java -Dmemleak.jmx.username=<username> -Dmemleak.jmx.username=<password> -jar <path to MemoryLeakDetector.jar>

\bin カタログの memleak ランチャを使用する場合は、コマンドラインで次のように指定できます。

-J-Dmemleak.jmx.username=<password>

 


Memory Leak Detector インタフェースの概観

BEA JRockit JVM に接続されていない状態の Memory Leak Detector のウィンドウは図 2-1 のようになっています。このインタフェースは 4 つのタブ、ツールバー、メイン メニュー、およびステータス バーから成っています。

図 2-1 Memory Leak Detector のメイン ウィンドウ

Memory Leak Detector のメイン ウィンドウ

タブの説明

Memory Leak Detector のメイン ウィンドウには、4 つのタブが表示されます (図 2-2)。各タブの機能については、表 2-1 を参照してください。

図 2-2 Memory Leak Detector のタブ (ワーク フローを示している)

Memory Leak Detector のタブ (ワーク フローを示している)

表 2-1 Memory Leak Detector のタブの説明
タブ
説明

Memory Leak Detector のステータス バー

[Trend] タブでは、Java ヒープ上のオブジェクト タイプの傾向分析を表示することができる。ヒープの 0.1% を超えるメモリを占有しているすべてのタイプのリストが表示される (この 0.1% の基準は、[FilePreferencesTrend] で変更可能)。増大速度の最も大きなオブジェクト タイプがリストの先頭に表示される。

Memory Leak Detector のステータス バー

[Types] タブでは、いろいろなタイプがお互いをどのように指しているかを示すタイプ グラフを表示することができる。

Memory Leak Detector のステータス バー

[Instances] タブでは、いろいろなインスタンスがお互いをどのように指しているかを示すインスタンス グラフを表示することができる。

Memory Leak Detector のステータス バー

[Allocation Stack Traces] タブでは、特定のタイプがコード内のどこで割り当てられているかを表示することができる。

ツールバーの説明

Memory Leak Detector のツールバー (図 2-3) には、JRockit インスタンスへの接続などの各種操作を行うためのボタンが配置されています。ツールバーの各ボタンの説明は、表 2-2 を参照してください。

図 2-3 Memory Leak Detector のツールバー

Memory Leak Detector のツールバー

表 2-2 ツールバーのアイコンの説明
アイコン
説明

Memory Leak Detector のステータス バー

管理サーバに接続する。このボタンを使用すると、管理サーバに接続して、Java アプリケーションをモニタすることができる。

Memory Leak Detector のステータス バー

管理サーバおよび Java アプリケーションとの接続を切断する。

Memory Leak Detector のステータス バー

Java アプリケーションのモニタを開始する。

Memory Leak Detector のステータス バー

画面の更新を休止する。

Memory Leak Detector のステータス バー

現在のモニタを停止する。

Memory Leak Detector のステータス バー

現在の表示をリフレッシュする。

Memory Leak Detector のステータス バー

タイプまたはインスタンスを拡大する。このツールはグラフ内での移動に有用。

Memory Leak Detector のステータス バー

タイプまたはインスタンスを縮小する。

Memory Leak Detector のステータス バー

オブジェクトを表示領域の中央に配置する。

ステータス バーの説明

ウィンドウの最下部に表示されるステータス バー (図 2-4) には、現在の接続に関する情報、傾向分析がオンかどうか、および割り当てスタック トレースがオンかどうかが表示されます。

図 2-4 Memory Leak Detector のステータス バー

Memory Leak Detector のステータス バー


  ページの先頭       前  次