写点什么

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

  • 2019-12-03
  • 本文字数:960 字

    阅读完需:约 3 分钟

低延迟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


2019-12-03 08:003528

评论

发布
暂无评论
发现更多内容

企业如何高质量上云?华为云服务器告诉你!

路过的憨憨

华为

HashMap 的初始值和最大值和扩容因子

HoneyMoose

企业运维强驱动

秃头也爱科技

企业数字化办公利器——华为云桌面Workspace

清欢科技

企业云上办公的最佳选择——华为云桌面Workspace

爱科技的水月

Vision Transformer这两年

OneFlow

人工智能 深度学习 NLP 大模型

设计模式之美--MVC(1)的贫血模型、充血模型

GalaxyCreater

设计模式

企业上云原来如此简单,华为云带你体验云上风采

清欢科技

三种基本排序

我是一个茶壶

排序算法 C语音 11月月更

双十一特惠,华为云桌面助力便捷高效办公!

爱科技的水月

Hash 的定义

HoneyMoose

一个有点咬文嚼字的 sorting 和 ordering

HoneyMoose

JavaScript进阶(八)实现图片预览并导入服务器功能

No Silver Bullet

图片预览 AngularJS 12月月更

会议都在云上开,华为云会议具有超高性价比

清欢科技

一站式解决方案,华为云CDN这波双十一很强!

秃头也爱科技

华为云CDN 真的有点“东西”!极速网上冲浪全靠它

爱科技的水月

Java HashMap 的扩容因子为什么是 0.75

HoneyMoose

Java Hash 碰撞

HoneyMoose

Java HashMap 在获得 Key 的 Hash 值的时候用的是什么算法

HoneyMoose

弹性伸缩、安全高效!华为云服务器助力企业数字化转型!

路过的憨憨

华为

华为云CDN,为你开启更快速的上网体验!

秃头也爱科技

设计模式之美--MVC(1)充血模型的DDD开发模式例子

GalaxyCreater

设计模式

Dubbo 3.1.3、3.2.0-beta.2 正式发布

Apache Dubbo

Java 开源 微服务 云原生 dubbo

华为云云服务器:赢麻了是种什么体验?

路过的憨憨

华为

一文了解 Go 标准库 strconv:string 与其他基本数据类型的转换

陈明勇

Go golang string 11月月更 strconv

极客时间运维进阶训练营第六周作业

9527

​ AngularJS进阶(七)AngularJS实现根据不同条件显示不同控件

No Silver Bullet

AngularJS 12月月更 条件筛选

体验华为云桌面的新办公形式,让你轻松办公

秃头也爱科技

架构实战营模块一作业

张贺

架构实战营

AngularJS进阶(九)控制器controller之间如何通信

No Silver Bullet

通信 AngularJS 12月月更

低延迟Profile工具Flight Recorder被移植到Java 8_编程语言_Erik Costlow_InfoQ精选文章