ホーム > プロファイルタスク > カスタムプロファイル
CPU プロファイル設定
カスタムプロファイルモードでは、適用可能なすべての内部プロファイル設定を自由に設定できます。CPU プロファイルを選択する場合、アプリケーション全体、アプリケーションの一部、またはアプリケーションの起動のプロファイルから選択できます。
CPU プロファイルオプションを選択すると、次の設定ダイアログが表示されます (図では「アプリケーションの一部」が選択されています)。
このダイアログでは、次のプロファイル構成を詳細に設定できます。
-
メソッド追跡: 完全 (正確な呼び出しツリーとタイミング)または標本 (正確な呼び出しツリーと標本タイミング)。CPU プロファイル時に、Profiler は、プロファイルする各メソッドの先頭に、「メソッドに入る」呼び出しを注入し、各 return の前に「メソッドから出る」呼び出しを注入します。完全計測モードでは、「メソッドに入る」と「メソッドから出る」の各呼び出しでタイムスタンプが生成され、メソッドで使われた時間がこれらのタイムスタンプの差として計算されます。標本計測モードでは、「メソッドに入る」/「メソッドから出る」呼び出しのたびにタイムスタンプを取得するのではなく、指定した各標本周期の終了付近に収まる呼び出しのタイムスタンプのみが取得されます。
詳細については「完全計測と標本計測」を参照してください。
-
root メソッド実行中に実行開始された新規スレッドを計測。 このオプションをオンにすると、Profiler はアプリケーションが root 計測メソッドに入ったあとに起動されたすべてのスレッドのコードを計測します (「シングルスレッドアプリケーションとマルチスレッドアプリケーションのプロファイル」を参照)。「アプリケーション全体」モードの場合、このオプションはデフォルトで設定され、コントロールが非表示になります。
-
スレッド CPU タイマーを使用。 さまざまな種類の OS タイマーを使用して、メソッドに入る/メソッドから出るイベントのタイムスタンプを取得できます。デフォルトで、絶対タイマーは、絶対時間またはウォールクロック時間を測定する場合に使用されます。スレッド CPU タイマーは、特定のスレッドの実行に使用される時間のみを測定します。必然的に、CPU が特定のスレッドのためにコードの実行を停止するたびに、OS はこのタイマーを一時停止し、実行がこのスレッドに戻るたびに、タイマーを再開します。このオプションは、Solaris OS でのみ使用できます。詳細については、「さまざまな種類のタイマーの使用方法」を参照してください。
-
計測: フィルタ。計測フィルタを指定して、計測およびプロファイルするクラス数を制限できます。
「詳細」タブで、その他のプロファイル設定を定義できます (「アプリケーションの一部」に切り替わる) 。
次のようなオプションがあります。
-
プロファイルするスレッド数を制限。 プロファイルするスレッド数を制限できます。以前に登録されていないスレッドが計測されるコードに入るたびに、このカウンタは減分されます。ゼロに達すると、新しいスレッドの登録が停止します。プロファイルデータは登録されたスレッドについてのみ収集されます。「プロファイル」>「収集結果をリセット」を呼び出すたびに、カウンタが上で指定した値にリセットされます (
)。詳細については、「シングルスレッドアプリケーションとマルチスレッドアプリケーションのプロファイル」を参照してください。
-
計測: スキーム。計測スキームを選択して、計測するメソッド数を制限できます。通常、計測するメソッド数と、プロファイル時にアプリケーションから実際に呼び出されるメソッド数が同じか、きわめて近くなれば最適です。「アプリケーションの一部」の場合のデフォルトのスキームは「少なく」です。通常、アプリケーションコードの一部 (たとえば、アプリケーションサーバー上で実行している 1 つまたは複数のサーブレット) をプロファイルする場合に最適です。計測されるメソッド数が最小になります。ただし、アプリケーションの起動や実行時間が短いコマンド行ユーティリティーなどのアプリケーション全体をプロファイルする場合には、「合計」計測の方が適しています。「アプリケーション全体」モードの場合、「合計」計測はデフォルト値であり、コントロールが非表示になります。詳細は、「計測スキーム」を参照してください。
-
さまざまな特殊 Java メソッドを計測する/計測しない。「計測」の「Method.invoke()」をオンにすると、Java リフレクション (java.lang.reflect.Method.invoke()) を使用したすべての呼び出しが追跡され、計測されます。オフにした場合、それらの呼び出しが追跡されません。ほかの 2 つのオプションでは、オブジェクトフィールドを取得または設定するメソッド、および実行可能コードを含まないメソッドを計測するかどうかを指定します。一般に、HotSpot JVM はこれらのメソッドをきわめて効率的に最適化し、通常その実行時間は無視できるものであるため、計測しても意味がありません。さらに、これらのメソッドを計測すると、プロファイルのオーバーヘッドを顕著にする原因となる場合があります。この 2 つのオプションのボックスは、これらのメソッドが呼び出されたかどうか、何回呼び出されたかを調べる場合にのみオンにしてください。
関連項目