Categories
程式開發

低延迟Profile工具Flight Recorder被移植到Java 8


OpenJDK的开发者们将强大的低延迟profile能力带到了Java 8中,可以使用非常低的开销来监控JVM性能。这个工具叫作Flight Recorder,现在已经在多个版本的JDK中可用,比如AdoptOpenJDK。

经过十多年的开发,Java Flight Recorder(JFR)已经为JRockit和WebLogic Server提供了底层性能监控能力。随着JRockit和HotSpot的合并,这个工具也被带到了Java 8和JDK 7u40的HotSpot中。与其他外部性能监控系统不一样,JFR直接被内置在JDK中,可以准确地监控性能,不会因为安全点或采样对监控造成影响。JFR的性能诊断非常准确,只占用大约2%的开销。这些诊断数据为开发者和运维人员提供了收集准确的性能数据的能力。

JFR的源代码在JDK11中,免费公开,所有人都可以访问。在被开源之前,这个功能只作为Oracle JDK的一个收费特性,需要获得Java SE高级版许可才能使用。要在Oracle JDK中打开这个功能,需要使用许可开关或者许可的JMX连接。将JFR移植到开源版本的JDK中让免费用户也能够在非Oracle JVM中使用这个功能。随着Oracle停止为JDK 8提供免费支持,并且需要商业许可才能使用JDK 11+,很多开发者转向使用免费版本,比如AdoptOpenJDK的HotSpot。

对于开发者来说,JFR有两个方面的用处:Flight Recorder是一个自动化的黑盒记录器,已经内置在JVM中,用于记录信息。运维人员可以通过单独运行的可视化控制台Mission Control来控制黑盒,计算指标或者创建性能快照。

JFR与其他商业版或免费版的profiler有一些显著的不同。最大的不同是JFR已经内置在JVM中,不需要集成额外的工具。有很多profiler专注于高层的指标,比如请求/响应负载时间,但JDK层并没有“Web请求”的概念。所以,JFR默认提供的指标更多的是面向JVM的原生操作。这里特别要提到它的高级垃圾回收分析功能。与其他只是简单收集垃圾回收统计信息不同的是,JFR会告诉我们收集了哪些垃圾以及这些垃圾是从哪里抛出来的。借助这个功能,开发人员可以确切地知道如何改进性能,以及在什么时候不应该进行垃圾回收调优。

想要了解Flight Recorder的开发人员可以先看看Marcus Hirt的演讲,他是JDK Mission Control的负责人。Mikael Vidstet在洛杉矶QCon上也做了一个相同话题的演讲。

原文链接

Low Latency Profiling Now Available in Java 8