回答:
Sampling
大量のスレッドダンプを取り、スタックトレースを分析することを意味します。これは通常はより高速で、バイトコードの実行時の変更を必要としません(バイトコードを壊す可能性があります)が、精度も低くなります。
Profiling
クラスとメソッドをインストルメント化することを意味し、実行されるたびに「レポート」します。これは、ダンプが行われたときにキャッチされたものだけでなく、インストルメント化されたメソッドのすべての呼び出しをカウントするため、より正確です。ただし、インストルメンテーションとは、クラスのバイトコードが変更されることを意味し、これによりプログラムが壊れる可能性があります。実際、そのため、大規模なアプリケーションサーバー(JBossやWebLogicなど)でプロファイリングを使用すると、多くの場合、すべてが停止またはハングします。