チュートリアル: Java プロセスからのプロファイル作成データを分析する
目的
Java プロセスのプロファイル作成から収集されたデータを分析するには、
以下の方法でプロファイルおよびロギング・パースペクティブの
プロファイルおよびロギング・ビューを使用します。
- 最も時間を消費するオブジェクトおよびメソッドを識別する
- メモリー集中型のクラスを識別する
- プログラムの並行性を測定する
- メモリー・リークを検出する
- メソッドの実行をそれぞれ時間要素として参照する
- 実行動作を時間要素としてより広い視点から眺める
- アクティブ・スレッドを識別する
- スレッドがアクティブである状況を識別する
- 頻繁に呼び出されるメソッドを識別する
- ガーベッジ・コレクションを測定する
- プログラム実行の各段階を識別する
- 各種のメソッド起動を検討する
- メソッドの呼び出し側を検討する
所要時間
1 時間
始める前に
このチュートリアルを開始する前に、以下のことを実行する必要があります。
- Eclipse プラットフォーム (Hyades ツールを含む) をインストールする。
- サンプルのプロファイル作成ファイルをインポート用に準備する これらのファイルは、
次の場所にあります:
install directory\directory\eclipse\plugins\org.eclipse.hyades.collection.framework\src\org\eclipse\hyades\test\collection\framework
説明
このチュートリアルでは、各種プロファイルおよびロギング・ビューを使用して、
サンプルの PerformanceExample.class を分析します。このサンプルは、2 つのボタンを含むフレームを表示します。
以下のタスクを実行します。
- ワークベンチでプロファイルおよびロギング・パースペクティブを開く
- PerformanceExample クラスのプロファイルを作成する
- プロファイル情報を分析する
アプリケーションのモニター中にビューを更新するには、
「ビューの最新表示 (Refresh Views)」ボタン
をクリックします。
「パースペクティブを開く (Open a Perspective)」
>「その他 (Other)」>「プロファイルおよびロギング (Profiling and Logging)」
の順にクリックします。
以下のステップに従ってください。
- 「プロファイル (Profile)」
をクリックします。Java プロセスの起動ウィザードが開き、
「クラス (Class)」ページが表示されます。
- 「ファイル・システム上のクラスを選択 (Select a class on the file system)」
を選択します。
- 「ブラウズ (Browse)」をクリックし、
次にサンプル・クラスを検出します。サンプル・クラスは次の場所にあるはずです。
install directory\eclipse\plugins\org.eclipse.hyades.collection.framework\bin\org\eclipse\hyades\test\collection\framework
「次へ (Next)」をクリックします。「宛先 (Destination)」ページが開きます。
- ProfileProject と DefaultMonitor は、デフォルトのプロファイル作成リソースで、
このプロファイル作成セッションからのデータを保管するために使用することができます。 「次へ (Next)」をクリックします。「プロファイル作成フィルター (Profiling Filters)」ページが開きます。
- デフォルトのフィルターをそのまま使用します。
「次へ (Next)」をクリックします。「プロファイル作成オプション (Profiling Options)」ページが開きます。
- 「アプリケーションがメモリーを使いすぎる
(My application uses too much memory)」のチェック・ボックスはすでに選択されています。
これは、メモリーに関連した情報が、
アプリケーションから収集されるプロファイル作成データに組み込まれることを意味します。
- 実行情報を受信するには、
「アプリケーションが遅すぎる (My application is too slow)」を選択します。
このオプションが選択されていると、統計ビューを使用して、
時間に関連した情報を分析することができます。 実行フローと
メソッド呼び出しビューが使用できるようにするには、実行のグラフィカル詳細を
収集する必要があります。 このサンプルの目的は、実行フロー・ビューや
メソッド呼び出しビューを含め、すべてのプロファイル作成ビューを
ガイドすることなので、「詳細表示 (Show Details)」をクリックしてから、
「実行フローのグラフィカル詳細 (Show execution flow graphical details)」
を選択します。 「終了 (Finish)」をクリックします。
- 必要なプロファイル作成リソースが作成され、エージェントとプロセスが
プロファイル・モニター・ビューに表示されます。
- フォルダー、モニター、およびホストの表示を使用可能にすると、
データをグループ化するモニターと、ワークベンチを実行しているマシンが表示されます。
一定期間、実行の振る舞いを表示する
- 実行フロー・ビューを開きます。
モニターを選択して、右マウス・ボタンをクリックし、次に
「開く (Open With)」>「実行フロー (Execution Flow)」
の順に選択します。
- プログラム全体の実行が、このビューに表されます。 ここでは、
右側の縦軸に時間が表示されます。
- メソッドの名前 (またはその下の空白) をクリックして選択します。
そのすべての呼び出し先メソッドが黄色で強調表示されます。 強調表示された領域の縦の長さが、メソッドの基本時間を表します。
基本時間の値は、状況表示行に表示されます。

- 「ズームイン (Zoom In)」ツール
を使用してカーソルを使用可能にし、次に領域をポイントしてクリックして拡大表示します。

実行フロー・ビューを使用してプロセスを分析する
実行フロー・ビューを開く
- プロファイル・モニター・ビューから、モニターまたはエージェントを選択します。
- 右マウス・ボタンをクリックし、次に「開く (Open With)」>
「実行フロー (Execution Flow)」の順に選択します。実行フロー・ビューが開きます。
注: アプリケーションのモニター中にビューを更新するには、
「ビューの最新表示 (Refresh Views)」ボタン
をクリックします。
アクティブ・スレッドを識別する
実行フロー・ビューの各スレッドには、多数のメソッド呼び出しによって識別される、
アクティビティーの期間が含まれています。
記号モデルにおいては、最初に呼び出されたメソッドがストライプ表示され、以降に呼び出されたメソッドは、その右側のストライプとして示されます。メソッド呼び出しのシーケンスは左から右へ進行します。
スレッドのアクティブな箇所が、この進行によって示されます。
メソッド呼び出しのシーケンスのアウトラインとなるセクション全体を選択すると、
そのシーケンスの実行に費やされた基本時間が状況表示行に表示されます。
スレッドがアクティブである基本時間を表示するには、以下の項目間の差を
検出してください。
- 選択した黄色の領域の最上部の水平線をポイントして、対応する基本時間を状況表示行に表示します。
- 同様に、黄色の選択領域の下端 (メソッド・シーケンスが動作中の実行期間を表す) をポイントすると、
その時点の基本時間が表示されます。
ヒント
- グラフが込み合い過ぎて読み取りが困難な場合は、込み合った区域をズームイン
してください。
- メソッドを選択すると、その呼び出し先メソッドがすべて黄色で強調表示されます。
- ワークベンチでビューをドラッグ・アンド・ドロップし、必要に応じて、
同時に配置することができます。
- カーソルを指すと必ず、その場所に対応する基本時間が状況バーに示されます。
- ビューの表示をリセットするには、「ホーム (Home)」ボタンをクリックします。
頻繁に呼び出されるメソッドを識別する
頻繁に呼び出されるメソッドを識別するには、次のようにしてください。
- ズーム・ツール
を使用して、メソッド呼び出しのシーケンスを拡大します。
- 選択した領域の中に同じ色のストライプがないか探してください。これらのストライプは、
同じクラス・インスタンスから複数回呼び出されたメソッドを識別します。
- 異なる色のストライプ (それぞれがメソッドを表す) の長さを調べます。
ストライプが長いほど、そのメソッドの実行時間が長いことを意味します。

ガーベッジ・コレクションを測定する
通常、このビューにおけるユーザー・スレッドのストライプを調べるだけでは、
オブジェクトにガーベッジ・コレクションが行われたかどうかを判別することはできません。
以下のステップに従ってください。
- このビューの左端の列を調べます。この列は、ガーベッジ・コレクション・スレッド用に予約されており、
GC スレッド列と呼ばれます。
- この GC スレッド列に、単一の細長い長方形があるかどうかを調べます。
この長方形は、オブジェクトのほとんどのメソッド呼び出しの下の方にあります。
この長方形は、オブジェクトのガーベッジ・コレクションが行われた場合に、GC スレッド列に現れます。
プログラムの実行の段階を識別する
初期化フェーズを識別する
- ズームイン・ツール
を使用して、メイン・スレッドの最上部にあるメソッド呼び出しのシーケンスを拡大します。
- -init- というマークが付いたメソッドに注意してください。
- クリックしてメソッドを選択します。ステータス・バーが更新され、
(値をアプリケーションで使用される変数に割り当てて) メソッドが
初期化を支援していることを示されます。
メソッド呼び出しビューを使用してメソッドを分析する
- プロファイル・モニターから、モニターまたはエージェントを選択します。右マウス・ボタンをクリックし、次に「開く (Open With)」>
「実行フロー (Execution Flow)」の順に選択します。 実行フロー・ビューが表示されます。
- 検討するメソッドを選択し、右マウス・ボタンをクリックしてから、
「メソッド呼び出しの表示 (Show Method Invocation)」を選択します。
- ズームイン・ツール
を使用して、表示のセクションの拡大表示します。 ストライプはクラスごとに色分けされており、
メソッド呼び出しを表す水平線により接続されています。
- メソッドの名前をクリックして、メソッドを選択します。
- 「ビューの最新表示 (Refresh Views)」ボタン
をクリックして、現行情報を表示していることを確認します。
- 次の行に注意してください。

この行には、メソッドの名前、続いて n/m が表示されています。
ここで、n は、合計の m 呼び出しのうち、
現在表示されている呼び出しです。
- 「戻る (Previous)」
と「次へ (Next)」
をクリックして、選択メソッドのすべての呼び出し
(または選択オブジェクトに対する各メッセージ) をブラウズします。ツールバーの分数が変化して、表示している呼び出しを示します。
メソッドの呼び出し側を検出する
メソッドの呼び出し側を検出するはに、メソッド呼び出しビューを継続したまま、
以下のステップに従ってください。
- メソッドの呼び出し側を表示するには、
「呼び出し側の表示 (Show Caller)」ボタン
をクリックします。
メソッドが呼び出し側と共に左方に表示されます。
- 表示しているそれぞれの新規呼び出しごとのメソッドの
呼び出し側に関する詳細を表示したい場合は、
ビューでその呼び出し側を表すストライプの上にカーソルを位置付けてください。
状況表示行には、呼び出し側の情報が表示されます。
- 選択されたメソッドが呼び出すメソッドを表示するには、
「呼び出し先メソッドの表示 (Show Called Method)」ボタン
をクリックします。
(C) Copyright IBM Corporation 2000, 2003. All Rights Reserved.