VisualVM has two separate tabs for sampling and profiling. Can someone help me figure out the difference between sampling and profiling in VisualVM ?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Sampling
means taking lots of thread dumps and analyzing stack traces.
This is usually faster, does not require runtime changes in your bytecode (which may break it), but is also less accurate.
Profiling
means instrumenting your classes and methods, so they "report" whenever they are run. This is more accurate, as it counts every invocation of instrumented method, not only those caught when the dump is done. However instrumentation means that the bytecode of your classes is changed, and this may break your program. Actually, for that reason, using profiling on large application servers (like JBoss, or WebLogic) often causes everything to die or hang.