プロファイラのパフォーマンスについて

プロファイラ自体が、使用中にCPUおよびメモリー・リソースを消費します。オーバーヘッドは、操作のプロファイリング・モードによって異なります。一般に、CPUサンプリング(20ミリ秒のサンプリング間隔)および参照スナップショットが最も速く、メモリー使用は最小です。

CPUメソッド・コール・カウントおよびメモリー新規オブジェクト/ガベージ・コレクション・プロファイリングはいずれも、プロファイラとプロファイリング対象の両方で、CPUおよびメモリーの負荷がはるかに高くなります。これは、これらが本質的にすべてのメソッド・コールを捕捉し、メソッドごと、コール・スタックごと、スレッド・データごとに記録するためです。

参照スナップショットの場合、プロファイラ・エージェントによるスナップショット・ファイルの書込みには、数秒しかかかりません。その他のすべての処理はアプリケーションの外部で行われるため、メモリー・スナップショットはアプリケーションのパフォーマンスにはほとんど影響を及ぼしません。

アプリケーションのベンチマークについて、実際のパフォーマンス時間の一部を次の表に示します。

プロファイルのタイプ 相対時間 時間(秒) 注意
プロファイリングなし 1.0 720
CPUサンプル 1.025 738 20ミリ秒のサンプリング・レート
CPUサンプル 1.29 930 10ミリ秒のサンプリング・レート
メモリー新規オブジェクト/ガベージ・コレクション 1.56 1125
参照スナップショット 1.02 735

次の表では、短い実行による数値をリストしています。

プロファイルのタイプ 相対時間 時間(秒) 注意
プロファイリングなし 1.0 30.7
CPUサンプル 1.4 41.8 20ミリ秒のサンプリング・レート
CPUサンプル 1.7 51.2 10ミリ秒のサンプリング・レート
メソッド・コール・カウント 4.6 141.2 メソッド・フィルタ使用
メソッド・コール・カウント 6.6 201.3 フィルタ未使用

プロファイラの出力は、10ミリ秒と20ミリ秒のサンプリング間隔のどちらでも本質的に同じであるため、20ミリ秒の間隔が適しています。

2つの表は、プロファイリングのオーバーヘッドはユースケースによって大きく異なる場合があるものの、CPUサンプルおよび参照スナップショットは、他の選択肢よりも常に負荷が低いことを示しています。

メモリー新規オブジェクト/ガベージ・コレクション・プロファイリングのJDeveloper では、一部のユースケースにはプロファイラで約1GB必要ですが、その他はデフォルトの最大512MBで実行できます。


CPUプロファイリング
メモリー・プロファイリング
リモート・プロファイリング