チュートリアル: Java プロセスからのプロファイル作成データを分析する

目的

Java プロセスのプロファイル作成から収集されたデータを分析するには、 以下の方法でプロファイルおよびロギング・パースペクティブの プロファイルおよびロギング・ビューを使用します。

所要時間

1 時間

始める前に

このチュートリアルを開始する前に、以下のことを実行する必要があります。

  1. Eclipse プラットフォーム (Hyades ツールを含む) をインストールする。
  2. サンプルのプロファイル作成ファイルをインポート用に準備する これらのファイルは、 次の場所にあります:
    install directory\directory\eclipse\plugins\org.eclipse.hyades.collection.framework\src\org\eclipse\hyades\test\collection\framework

説明

このチュートリアルでは、各種プロファイルおよびロギング・ビューを使用して、 サンプルの PerformanceExample.class を分析します。このサンプルは、2 つのボタンを含むフレームを表示します。

以下のタスクを実行します。

  1. ワークベンチでプロファイルおよびロギング・パースペクティブを開く
  2. PerformanceExample クラスのプロファイルを作成する
  3. プロファイル情報を分析する

アプリケーションのモニター中にビューを更新するには、 「ビューの最新表示 (Refresh Views)」ボタン  a button with stylized icon をクリックします。

ワークベンチでプロファイルおよびロギング・パースペクティブを開く

パースペクティブを開く (Open a Perspective) a button with stylized icon >「その他 (Other)」>「プロファイルおよびロギング (Profiling and Logging)」 の順にクリックします。

PerformanceExample クラスのプロファイルを作成する

以下のステップに従ってください。

  1. プロファイル (Profile)」   a button with stylized icon をクリックします。Java プロセスの起動ウィザードが開き、 「クラス (Class)」ページが表示されます。
  2. ファイル・システム上のクラスを選択 (Select a class on the file system)」 を選択します。 
  3. ブラウズ (Browse)」をクリックし、 次にサンプル・クラスを検出します。サンプル・クラスは次の場所にあるはずです。
    install directory\eclipse\plugins\org.eclipse.hyades.collection.framework\bin\org\eclipse\hyades\test\collection\framework
    次へ (Next)」をクリックします。「宛先 (Destination)」ページが開きます。
  4. ProfileProject と DefaultMonitor は、デフォルトのプロファイル作成リソースで、 このプロファイル作成セッションからのデータを保管するために使用することができます。  「次へ (Next)」をクリックします。「プロファイル作成フィルター (Profiling Filters)」ページが開きます。
  5. デフォルトのフィルターをそのまま使用します。 「次へ (Next)」をクリックします。「プロファイル作成オプション (Profiling Options)」ページが開きます。
  6. アプリケーションがメモリーを使いすぎる (My application uses too much memory)」のチェック・ボックスはすでに選択されています。 これは、メモリーに関連した情報が、 アプリケーションから収集されるプロファイル作成データに組み込まれることを意味します。 
  7. 実行情報を受信するには、 「アプリケーションが遅すぎる (My application is too slow)」を選択します。 このオプションが選択されていると、統計ビューを使用して、 時間に関連した情報を分析することができます。 実行フローと メソッド呼び出しビューが使用できるようにするには、実行のグラフィカル詳細を 収集する必要があります。 このサンプルの目的は、実行フロー・ビューや メソッド呼び出しビューを含め、すべてのプロファイル作成ビューを ガイドすることなので、「詳細表示 (Show Details)」をクリックしてから、 「実行フローのグラフィカル詳細 (Show execution flow graphical details)」 を選択します。  終了 (Finish)」をクリックします。
  8. 必要なプロファイル作成リソースが作成され、エージェントとプロセスが プロファイル・モニター・ビューに表示されます。 
  9. フォルダー、モニター、およびホストの表示を使用可能にすると、 データをグループ化するモニターと、ワークベンチを実行しているマシンが表示されます。

    リソースの階層と、可視にするリソースをチェックするためのドロップダウン・メニューが表示されたプロファイル・モニター

     

プロファイル情報を分析する

一定期間、実行の振る舞いを表示する

  1. 実行フロー・ビューを開きます。 モニターを選択して、右マウス・ボタンをクリックし、次に 「開く (Open With)」>「実行フロー (Execution Flow)」 の順に選択します。 
  2. プログラム全体の実行が、このビューに表されます。 ここでは、 右側の縦軸に時間が表示されます。
  3. メソッドの名前 (またはその下の空白) をクリックして選択します。 そのすべての呼び出し先メソッドが黄色で強調表示されます。  強調表示された領域の縦の長さが、メソッドの基本時間を表します。 基本時間の値は、状況表示行に表示されます。

    2 つのメソッドを持つ実行フロー・ビュー。左方のメソッドは黄色の陰影が付いている
     
  4. ズームイン (Zoom In)」ツール   a button with stylized icon を使用してカーソルを使用可能にし、次に領域をポイントしてクリックして拡大表示します。 

    クローズアップされた実行フローの図示
     

実行フロー・ビューを使用してプロセスを分析する

実行フロー・ビューを開く

  1. プロファイル・モニター・ビューから、モニターまたはエージェントを選択します。 
  2. 右マウス・ボタンをクリックし、次に「開く (Open With)」> 「実行フロー (Execution Flow)」の順に選択します。実行フロー・ビューが開きます。

注: アプリケーションのモニター中にビューを更新するには、 「ビューの最新表示 (Refresh Views)」ボタン  a button with stylized icon をクリックします。

アクティブ・スレッドを識別する

実行フロー・ビューの各スレッドには、多数のメソッド呼び出しによって識別される、 アクティビティーの期間が含まれています。 記号モデルにおいては、最初に呼び出されたメソッドがストライプ表示され、以降に呼び出されたメソッドは、その右側のストライプとして示されます。メソッド呼び出しのシーケンスは左から右へ進行します。 スレッドのアクティブな箇所が、この進行によって示されます。

メソッド呼び出しのシーケンスのアウトラインとなるセクション全体を選択すると、 そのシーケンスの実行に費やされた基本時間が状況表示行に表示されます。 スレッドがアクティブである基本時間を表示するには、以下の項目間の差を 検出してください。 

  1. 選択した黄色の領域の最上部の水平線をポイントして、対応する基本時間を状況表示行に表示します。
  2. 同様に、黄色の選択領域の下端 (メソッド・シーケンスが動作中の実行期間を表す) をポイントすると、 その時点の基本時間が表示されます。

ヒント

頻繁に呼び出されるメソッドを識別する

頻繁に呼び出されるメソッドを識別するには、次のようにしてください。

  1. ズーム・ツール  a button with stylized icon を使用して、メソッド呼び出しのシーケンスを拡大します。
  2. 選択した領域の中に同じ色のストライプがないか探してください。これらのストライプは、 同じクラス・インスタンスから複数回呼び出されたメソッドを識別します。
  3. 異なる色のストライプ (それぞれがメソッドを表す) の長さを調べます。 ストライプが長いほど、そのメソッドの実行時間が長いことを意味します。  

    メソッド呼び出しビューのピクチャー

ガーベッジ・コレクションを測定する

通常、このビューにおけるユーザー・スレッドのストライプを調べるだけでは、 オブジェクトにガーベッジ・コレクションが行われたかどうかを判別することはできません。

以下のステップに従ってください。

  1. このビューの左端の列を調べます。この列は、ガーベッジ・コレクション・スレッド用に予約されており、 GC スレッド列と呼ばれます。
  2. この GC スレッド列に、単一の細長い長方形があるかどうかを調べます。 この長方形は、オブジェクトのほとんどのメソッド呼び出しの下の方にあります。 この長方形は、オブジェクトのガーベッジ・コレクションが行われた場合に、GC スレッド列に現れます。

プログラムの実行の段階を識別する

初期化フェーズを識別する

  1. ズームイン・ツール  a button with stylized icon を使用して、メイン・スレッドの最上部にあるメソッド呼び出しのシーケンスを拡大します。
  2. -init- というマークが付いたメソッドに注意してください。
  3. クリックしてメソッドを選択します。ステータス・バーが更新され、 (値をアプリケーションで使用される変数に割り当てて) メソッドが 初期化を支援していることを示されます。

メソッド呼び出しビューを使用してメソッドを分析する

  1. プロファイル・モニターから、モニターまたはエージェントを選択します。右マウス・ボタンをクリックし、次に「開く (Open With)」> 「実行フロー (Execution Flow)」の順に選択します。  実行フロー・ビューが表示されます。
  2. 検討するメソッドを選択し、右マウス・ボタンをクリックしてから、 「メソッド呼び出しの表示 (Show Method Invocation)」を選択します。
  3. ズームイン・ツール  a button with stylized icon を使用して、表示のセクションの拡大表示します。  ストライプはクラスごとに色分けされており、 メソッド呼び出しを表す水平線により接続されています。
  4. メソッドの名前をクリックして、メソッドを選択します。 
  5. ビューの最新表示 (Refresh Views)」ボタン  a button with stylized icon をクリックして、現行情報を表示していることを確認します。
  6. 次の行に注意してください。
    メソッド名と 1/1 という数字を表示する状況表示行

    この行には、メソッドの名前、続いて n/m が表示されています。 ここで、n は、合計の m 呼び出しのうち、 現在表示されている呼び出しです。 
  7. 戻る (Previous) と「次へ (Next)」  をクリックして、選択メソッドのすべての呼び出し (または選択オブジェクトに対する各メッセージ) をブラウズします。ツールバーの分数が変化して、表示している呼び出しを示します。

メソッドの呼び出し側を検出する

メソッドの呼び出し側を検出するはに、メソッド呼び出しビューを継続したまま、 以下のステップに従ってください。

  1. メソッドの呼び出し側を表示するには、 「呼び出し側の表示 (Show Caller)」ボタン  をクリックします。  メソッドが呼び出し側と共に左方に表示されます。 
  2. 表示しているそれぞれの新規呼び出しごとのメソッドの 呼び出し側に関する詳細を表示したい場合は、 ビューでその呼び出し側を表すストライプの上にカーソルを位置付けてください。 状況表示行には、呼び出し側の情報が表示されます。
  3. 選択されたメソッドが呼び出すメソッドを表示するには、 「呼び出し先メソッドの表示 (Show Called Method)」ボタン  をクリックします。