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


158

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

回答:


182

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

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


2
プロファイリングはサンプリングよりも正確ですが、より多くのリソースが必要になるということですか?
Parag 2012

10
パフォーマンスの悪い方法を特定するためにサンプリングを使用するたびに、サンプリングは十分に正確であることがわかりました。私は個人的にプロファイリングを使用しません。
マルケス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.