jVisualvm中的采样和分析之间的差异

Par*_*rag 156 java heap jvm jvisualvm

VisualVM有两个单独的选项卡,用于采样和分析.有人可以帮我弄清楚VisualVM中的采样和分析之间的区别吗?

npe*_*npe 181

Sampling意味着需要进行大量的线程转储并分析堆栈跟踪.这通常更快,不需要在字节码中更改运行时(这可能会破坏它),但也不太准确.

Profiling插装类和方法,所以每当他们跑他们"报告".这更准确,因为它计算了每个调试方法的调用,而不仅仅是在转储完成时捕获的那些调用.但是,检测意味着更改了类的字节码,这可能会破坏您的程序.实际上,出于这个原因,在大型应用程序服务器(如JBoss或WebLogic)上使用分析通常会导致所有内容死亡或挂起.

  • 我发现每次使用它来精确定位表现不佳的方法时,采样都非常准确.我个人从不使用剖析. (9认同)
  • 是否意味着分析比抽样更准确,但需要更多资源? (2认同)