Java Mission Control和Flight Recorder是否提供与VisualVM相同的功能?

时间:2016-10-26 21:44:15

标签: java performance jvisualvm apm java-mission-control

用于Java的(相对)新的内置性能监视器/分析器是Mission Control。 Oracle docs advertise它们可以在生产中使用而不会产生性能命中(低于2%):

  

工具链[Mission Control + Flight Recorder]使开发人员和管理员能够从本地运行或部署在生产环境中的Java应用程序中收集和分析数据。

我已经使用jvisualvm(VisualVM)多年了,但是从来没有在生产环境中因为 带来性能开销的推定警告。

所以我问: Mission Control(和它的Flight Recorder)和VisualVM之间有什么不同,它允许MC / FR不妨碍性能?或者它们不包含VisualVM的某些特性/功能递送

1 个答案:

答案 0 :(得分:3)

方法分析的主要性能差异是MC / JFR使用采样,并且每个采样间隔仅采样几个线程。它使用与AsyncGetCallTrace类似的方法(参见例如http://psy-lob-saw.blogspot.com/2016/06/the-pros-and-cons-of-agct.html

由于我使用MC / JFR,我并不熟悉VisualVM如何进行抽样分析,但我相信它并没有使用相同的方法。

MC / JFR将其数据收集引擎深度集成到HotSpot JVM中,VisualVM使用外部API / MXBeans。这也有助于JFR降低性能开销。 通常,JFR旨在找到热点,而不是收集100%正确但可能会降低应用程序速度并影响实际行为的数据。这适用于方法和分配采样,以及关于延迟事件(等待/睡眠/阻止)的其他信息,其中仅记录高于特定阈值的事件。我对VisualVM的比较不太熟悉。

除此之外,这两个工具具有不同的功能集,其中没有一个是另一个的超集。