Java任务控制和飞行记录器是否具有与VisualVM相同的功能?

13
新的内置Java性能监视器/分析器是Mission Control。 Oracle文档 宣传称它们可以在生产环境中使用而不会产生性能损失(少于2%):
“工具链[Mission Control + Flight Recorder]使开发人员和管理员能够从本地运行或部署在生产环境中的Java应用程序中收集和分析数据。”
我已经使用jvisualvm(VisualVM)很多年了,但从未在生产环境中使用过,因为据说它确实会产生性能开销。
所以我问:Mission Control(及其Flight Recorder)与VisualVM之间有何不同,使MC / FR不会影响性能? 或者它们不包括VisualVM提供的某些功能/功能?
1个回答

11
方法分析的主要性能差异在于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的比较不太熟悉。
除此之外,这两个工具具有不同的功能集,其中一个功能集不是另一个功能集的超集。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接