メモリー・プロファイラ

メモリー・プロファイラを使用して、プログラムがJavaヒープをどのように使用しているかを調べます。メモリー・リーク、ヒープの不正使用、疑わしいメモリーの動作などを検出します。

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

表示されているサンプルのデータをHTMLファイルに保存するには、プログラムを一時停止し、メイン・ウィンドウで表を右クリックして、「HTMLで保存」を選択します。

(現在保持されているサンプル数に基づく)すべてのサンプルのデータを保存するには、プログラムを一時停止し、メイン・ウィンドウで表を右クリックして、「すべてHTMLで保存」を選択します。

列内のデータを昇順または降順にソートするには、列ヘッダーをクリックします。列の配置を変更するには、列をクリックして移動先までドラッグします。

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

メイン・ウィンドウ

メイン・ウィンドウの表には、ヒープのアクティビティ(経過時間内に発生した割当てと解放)およびヒープの状態が表示されます。プロファイラ・クラス・セットのメソッドがヒープに存在しないときに発生した割当てはカウントされません。

表の一番上には、現在のプロファイリング・セッションを制御する5つのボタンと、プロファイリングの進捗状況を示すスライダがあります。

Restart button
プログラムを最初から再開する場合にクリックします。
Resume button
一時停止しているプログラムを再開する場合にクリックします。
Pause button
実行しているプログラムを一時停止する場合にクリックします。
Snapshot button
プログラムのスナップショットをとる場合にクリックします。
Stop button
実行しているプログラムを停止する場合にクリックします。
 
The slider
現在のプロファイリング・セッションの進捗状況が表示されます。プログラムを一時停止すると、プロファイリングの進行が止まります。左矢印を使用してスライダを逆方向に動かすと、別の時点でのメモリー使用のスナップショット(サンプル)が表示されます。メイン・ウィンドウおよび詳細ウィンドウのデータは、指定した瞬間のサンプルを反映しています。

一度プログラムを一時停止すると、詳細ウィンドウを開いてプロファイリングを続行することができ、両方のウィンドウでデータを取得できます。その後、詳細ウィンドウが存在しない時点までプログラムを逆方向にスクロールすると、NO DATAという通知が表示されます。詳細ウィンドウを一度閉じると、データはリカバリ不可能です。

「プロジェクトの設定」ダイアログの「メモリー」ページを使用して、メモリーに保持するサンプル数を決定します。これによって戻れる回数が決まります。

表には、現在のプロファイリング・セッションで考察されている各クラスのデータが表示されます。

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

これらの列の値は、スクロールして前のサンプルに移動すると、サンプルに応じて変化します。

詳細ウィンドウ

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

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

一度プログラムを一時停止すると、詳細ウィンドウを開いてプロファイリングを続行することができ、両方のウィンドウでデータを取得できます。その後、詳細ウィンドウが存在しない時点までプログラムを逆方向にスクロールすると、NO DATAという通知が表示されます。詳細ウィンドウを一度閉じると、データはリカバリ不可能です。

詳細ウィンドウは、現在のサンプルについてのみ開くことができます。プログラムの一時停止中にセッションの前のサンプルに戻って、詳細ウィンドウを開こうとすると、スライダのバーが現在のアクティブなサンプルに移動し、現在のサンプルの詳細ウィンドウが開かれます。

このウィンドウに表示されるディテール表には、もう1つの列があります。

コード位置
完全修飾メソッド名および割当て位置の行番号が表示されます。割当ては、「プロジェクトの設定」ダイアログの「プロファイラ」ページに指定されたセットの最初のメソッドに対してカウントされます。このセットのメソッドがスタックに存在しないときに割当てが発生しても、その割当ては記録されません。

その他の列には、メイン・ウィンドウで表示されているものと同じタイプの情報が表示されます。


プロファイラ・クラス・セットについて
実行プロファイリングについて