用于 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/