プロファイラ自体が、使用中に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で実行できます。
Copyright © 1997, 2009, Oracle. All rights reserved.