速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

【Flutter 专题】46 图解新的状态管理 Provider (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

命令行如何执行jar包里面的方法

FunTester

性能测试 反射 接口测试 测试框架 FunTester

【预告】网络研讨会|下一代汽车操作系统微内核seL4:seL4基金会主席谈物理系统安全工程实践

鉴释

自动驾驶 操作系统 微内核

来一份全面的面试宝典练练手,6年老Java面经总结

Java 程序员 后端

Supervisor 基础配置

耳东@Erdong

Supervisor 9月日更

linux系列之:告诉他,他根本不懂kill

程序那些事

Linux 命令 程序那些事 kill

DBA:介里有你没有用过的“CHUAN”新社区版本Redis6.0

华为云开发者联盟

redis 开源 多线程 Redis 6.0 华为云DCS

一期投资30亿!“中国—东盟星动云算力中心项目”将落地广西巴马

旺链科技

数字经济 产业区块链 一带一路

“妈我不想去上课!”“不行你是老师!”

梦想橡皮擦

9月日更

还重构?就你那代码只能铲了重写!

小傅哥

Java 小傅哥 代码优化 代码重构 开发标准

普通二本的辛酸Java面试之路,34岁Java程序员裸辞

Java 程序员 后端

手撸二叉树之翻转二叉树

HelloWorld杰少

9月日更

【Vuex 源码学习】第三篇 - Vuex 中 State 状态的实现

Brave

源码 vuex 9月日更

GaussDB(for MySQL)如何快速创建索引?华为云数据库资深架构师为您揭秘

华为云开发者联盟

数据库 算法 索引 GaussDB(for MySQL) MySQL索引

雪花算法,什么情况下发生 ID 冲突?

马丁玩编程

Java lua redis 雪花算法

镜子-或许我们也和Pod一样生活在虚拟世界

Lance

针对各种指标数据如何选择合适的算法?

云智慧AIOps社区

技术 算法 数据 智能运维 指标

Android音频API

轻口味

android 音视频 引航计划 9月日更

普通二本的辛酸Java面试之路,Java程序员架构之路该如何继续学习

Java 程序员 后端

架构实战营模块三作业

michael

#架构实战营

枚举在 Golang 中的实现

baiyutang

Go 语言 9月日更

乘着汽车智能化的浪潮,“汽车人”的职业方向选择(二)

SOA开发者

程序员 软件 汽车 职业发展

图遍历算法

6979阿强

图遍历 GraphScope

Python——绑定与方法调用

在即

9月日更

玩转anyRTC用户控制台

anyRTC开发者

音视频 WebRTC 语音通话 视频通话 用户后台

我用MRS-ClickHouse构建的用户画像系统,让老板拍手称赞

华为云开发者联盟

数据库 标签 用户画像 MRS ClickHouse 列式存储

闲鱼消息发展回顾

OpenIM

Sentinel 常用流控算法

Z

sentinel 流控算法 服务监控 服务降级 流控

【LeetCode】寻找峰值Java题解

Albert

算法 LeetCode 9月日更

图计算的应用

6979阿强

通过线路输入功能快速创建吉他谱

懒得勤快

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