9

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

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

我已经使用jvisualvm(VisualVM)很多年了,但由于假定警告它确实会产生性能开销,因此从未在生产环境中使用过。

所以我问:Mission Control(及其飞行记录器)和 VisualVM 之间有什么不同,可以让 MC/FR 不影响性能?还是它们不包含 VisualVM 提供的某些特性/功能?

4

1 回答 1

9

方法分析的主要性能差异是 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 使用外部 APIs/MXBeans。这也有助于 JFR 降低性能开销。通常,JFR 旨在发现热点,而不是收集 100% 正确但可能会减慢应用程序并影响实际行为的数据。这适用于方法和分配采样,以及有关延迟事件(等待/睡眠/阻塞)的其他信息,其中仅记录高于特定阈值的事件。我不太熟悉这与 VisualVM 的比较。

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

于 2016-10-27T13:59:30.617 回答