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

标签 java performance jvisualvm apm java-mission-control

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

The tool chain [Mission Control + Flight Recorder] enables developers and administrators to collect and analyze data from Java applications running locally or deployed in production environments.

我已经使用 jvisualvm (VisualVM) 很多年了,但从未在生产环境中使用过,因为据推测它确实会产生性能开销。

所以我问:Mission Control(及其飞行记录器)和 VisualVM 之间有什么不同使得 MC/FR 不会影响性能?或者它们是否不包含 VisualVM 无​​法提供的某些特性/功能交付?

最佳答案

方法分析的主要性能差异是 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% 正确但可能会降低应用程序速度并影响实际行为的数据。这适用于方法和分配采样,以及有关延迟事件(等待/ sleep /阻塞)的其他信息,其中仅记录超过特定阈值的事件。我不太熟悉这与 VisualVM 的比较。

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

关于java - Java Mission Control 和 Flight Recorder 是否提供与 VisualVM 相同的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272599/

相关文章:

java - 配置文件选项未显示在 Java VisualVM for Tomcat 中

java - 为什么 VisualVM 中的 "Total Time"列与运行时持续时间不同?

java - 在循环的限定比较中使用随机参数时,它是调用一次随机化函数还是每次循环运行时调用?

java - apache poi 查找工作表中的行数

java - 将数据记录保存到数据库时出现 SQL 语法错误

c# - 带有 SharedSizeGroup 列的网格表现得很奇怪(*不是*无限循环)

ios - 以快速、缓慢的性能和低 FPS 绘制应用程序

java - JVisualVM-Xverify :none does not solve Redefinition failed with error 62

java - 如何在java中对方法进行排队

jquery - PC 浏览器上的性能无限滚动