メモリー・プロファイラ

メモリー・プロファイラを使用すると、プログラムがどのようにJavaヒープを使用しているかを把握できます。メモリー・リークやヒープの非効率な使用、および一般にメモリーに関する疑わしい動作を検出します。

メモリー・プロファイラでは、最初に1つの大きな表にデータが表示されます。また、その表にリストされているクラスに関する詳細なレポートも提供されます。クラスの詳細は、表でクラスが表示されている行をダブルクリックするか、右クリックして「割当ての詳細の取得」を選択します。

後で参照するためにプロファイリング・セッションのデータを保存するには、表内で右クリックして次の保存オプションのいずれかを選択します。

データを列内で昇順または降順にソートするには、列ヘッダーをクリックします。列を再編成するには、列をクリックして新しい位置にドラッグします。

「設定」ダイアログに直接移動してプロファイラ設定を再構成するには、メイン・ウィンドウの表内で右クリックして「設定」を選択します。表示される列に変更を指定した場合は、プロファイラに戻ると、プロファイラの表示に変更内容が反映されます。他の変更を行った場合は、新規のプロファイリング・セッションを開始するまで変更内容は反映されません。

メイン・ウィンドウ

メイン・ウィンドウの表には、ヒープの状態だけでなく、ヒープの活動状況(経過時間中に発生した割当てと解放)が表示されます。プロファイラ・クラス・セットに属するメソッドがヒープに1つもない場合に発生した割当ては、カウントされません。

表の上部には、現在のプロファイリング・セッションを制御する5つのボタン、およびプロファイリングの進行状況を追跡するスライダが1つあります。

「再起動」ボタン
一時停止したプログラムを始めから再起動する場合にクリックします。
「再開」ボタン
一時停止したプログラムを再開する場合にクリックします。
「プログラムの停止」ボタン
実行中のプログラムを一時停止する場合にクリックします。
「スナップショット」ボタン
一時停止したプログラムのスナップショットを取得する場合にクリックします。
「停止」ボタン
実行中のプログラムを停止する場合にクリックします。
 
スライダ
現在のプロファイリング・セッションの進行状況が表示されます。プログラムを一時停止すると、プロファイリングの進行状況が停止します。左矢印をクリックしてスライダを後方動かすと、様々な時点のメモリー使用量のスナップショット(サンプル)を表示できます。メイン・ウィンドウのデータおよび詳細ウィンドウのデータには、特定のタイミングで取得されたサンプルが反映されます。

プログラムを一時停止した後、詳細ウィンドウを表示してプロファイリングを継続し、両方のウィンドウにデータを取得できます。詳細ウィンドウが表示される以前の状態までプログラムを逆方向にスクロールすると、NO DATAという通知が表示されます。詳細ウィンドウを閉じると、データはリカバリできなくなります。

「設定」ダイアログのプロファイラ - メモリー・ページでは、メモリーにいくつのサンプルが保持されているかを確認できます。この値によって、戻ることができる数が決まります。

表には、現在のプロファイリング・セッションで検討されるクラスごとにデータが表示されます。

クラス
クラスの完全修飾名が表示されます。参照するクラスのセットは、「設定」ダイアログのプロファイラ・ページで変更できます。
カウント
ヒープ内で見つかった指定クラスのインスタンスの合計数が表示されます。
サイズ
ヒープ内で見つかった特定クラスのすべてのインスタンスで消費される合計メモリーが表示されます。
割当て数
現在の間隔で割り当てられているインスタンス数が表示されます。
解放数
現在の間隔でガベージ・コレクションによって解放されたインスタンス数が表示されます。
Diff
数の差分(「割当て数」 - 「解放数」)が表示されます。
割当てサイズ
現在の間隔で割り当てられているインスタンスのサイズ(バイト単位)が表示されます。
解放サイズ
現在の時間間隔で解放されたインスタンスのサイズ(バイト単位)が表示されます。
サイズの差分
サイズの差分(「割当てサイズ」 - 「解放サイズ」)が表示されます。

これらの列の値は、前のサンプルへのスクロールに合わせて変化します。

詳細ウィンドウ

表内のいずれかの行をダブルクリックするか、右クリックして「割当ての詳細の取得」を選択すると、特定のクラスに関する詳細な割当て表を開くことができます。この割当て表にはそのクラスの各インスタンスが表示され、各インスタンスの割当て元が示されます。詳細ウィンドウを閉じると、その内容は破棄されます。

表内に表示されたメソッドのソース・コードを表示するには、メソッドが表示されている表の行をダブルクリックするか、右クリックして「ソースの検索」を選択します。

プログラムを一時停止した後、詳細ウィンドウを表示してプロファイリングを継続し、両方のウィンドウにデータを取得できます。詳細ウィンドウが表示される以前の状態までプログラムを逆方向にスクロールすると、NO DATAという通知が表示されます。詳細ウィンドウを閉じると、データはリカバリできなくなります。

詳細ウィンドウは、現在のサンプルに関してのみ開くことができます。プログラムを一時停止してセッションの始めの方のサンプルに戻り、詳細ウィンドウを開こうとすると、スライダのノブが現在のアクティブなサンプルにジャンプし、そのサンプルに関する詳細ウィンドウが開きます。

このウィンドウに表示される詳細な表には、列が1つ追加されます。

コード位置
割当て位置の完全修飾メソッド名および行番号が表示されます。割当ては、「設定」ダイアログのプロファイラ・ページで指定されているセット内の最初のメソッドに向けてカウントされます。このセットのメソッドがスタック上にない場合に割当てが行われると、この割当ては記録されません。

これ以外の行には、メイン・ウィンドウに示されているタイプの情報が表示されます。


実行プロファイリングについて