web-dev-qa-db-ja.com

VisualVMでのサンプリングとプロファイリングの違い

VisualVMには、サンプリングとプロファイリング用の2つのタブがあります。 VisualVMでのサンプリングとプロファイリングの違いは何ですか?

153
Parag

Samplingは、大量のスレッドダンプを取得し、スタックトレースを分析することを意味します。これは通常より高速で、バイトコードの実行時の変更を必要としません(これにより破損する可能性があります)が、精度も低くなります。

Profilingは、クラスとメソッドが instrumenting であるため、実行されるたびに「レポート」します。これは、ダンプの完了時に捕捉されたメソッドだけでなく、インスツルメントされたメソッドのすべての呼び出しをカウントするため、より正確です。ただし、インストルメンテーションとは、クラスのバイトコードが変更されることを意味し、これによりプログラムが破損する可能性があります。実際、そのため、大規模なアプリケーションサーバー(JBoss、WebLogicなど)でプロファイリングを使用すると、すべてが停止またはハングすることがよくあります。

179
npe