1. ホーム
  2. java

[解決済み] jVisualVMのサンプリングとプロファイリングの違いについて

2022-04-25 06:41:34

質問

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

どのように解決するのですか?

Sampling は、スレッドダンプをたくさん取り、スタックトレースを分析することです。 これは通常より速く、バイトコードをランタイムに変更する必要がありません(変更すると壊れる可能性があります)が、精度は低くなります。

Profiling というのは インストルメンテーション クラスやメソッドが実行されるたびに、レポートが作成されます。これはより正確で、ダンプが行われたときに捕らえられたものだけでなく、インスツルメンテーションされたメソッドのすべての呼び出しをカウントするからです。しかし、インスツルメンテーションはクラスのバイトコードを変更することを意味し、これはプログラムを破壊する可能性があります。実際、この理由から、大規模なアプリケーションサーバー(JBossやWebLogicなど)でプロファイリングを使用すると、すべてが死んだり、ハングアップしたりすることがよくあるのです。