正如 InfoQ 去年 11 月的报道,在完成早期访问版本之后,Java Flight Recorder正在被合并到 OpenJDK 8 中。这将允许 OpenJDK 8 的构建——如果它们在构建时使用了编译时标识—enable-jfr——使用 Java Flight Recorder 来记录事件,以便稍后使用Java Mission Control进行分析。已经有人提议默认启用JFR,实际上,对于那些希望禁用该特性的 OpenJDK 8 构建,可以将开关切换为–disable-jfr 标识。
虽然 Oracle Java 8 构建启用了 JFR,但只在商业许可下可用。由于 Oracle 不免费提供最新的 Java 8 构建,开发人员已经转而使用 OpenJDK 8 构建,它可能来自AdoptOpenJDK,也可能来自其他渠道,比如 RedHat 或 Azul 的Zing。但是,因为来自 Adopt OpenJDK 站点的构建是直接从上游源代码构建的,所以它们还不包含 JFR。一旦更改被合并进来,JFR 将对来自该分支的所有构建可用。Azul 在发布其 Zulu-8 构建时实现了对 JFR 的早期访问支持。
Flight Recorder 的记录可以用 Java Mission Control 打开和分析,或者作为 Eclipse 的插件安装,JMC-7.1最近已发布。JMC 7.1的构建可以从Azul(可以用于 Java 8 和 Java 11 版本的处理)获得,也可以从RedHat 8.1.1获得。版本 7 从原始的Mercurial存储库构建,但作为Project Skara(旨在从Mercuial迁移到Git,后续迁移到GitHub)的早期采用者,版本 8 的未来开发将在新的openjdk/jmc GitHub 库中进行。AdoptOpenJDK 为即将发布的第 8 版提供了JMC的每夜构建。
JFR 背后的技术在不断发展,Java 14 支持JEP 349,它允许以流的方式记录 JVM 中的事件,而不必转储和加载用于分析的记录。这使得未来的 JVM 能够连续地使用 JFR 接口将度量数据上传到数据收集引擎,用于仪表板报告。Java 14 的早期访问版本将于下个月正式发布。JMC 的主要开发人员 Marcus Hirt 创建了一个开放跟踪插件,把时间和范围加入到 JFR 记录中,以便进行更详细的分析。
原文链接:
评论