Java Flight Recorder (JFR):生产级性能监控神器

一、为什么需要 JFR?

在生产环境中,性能问题往往是最难排查的 —— 日志只能看到表象,监控指标粒度又不够细,Profiler 工具大多数不适合直接挂在生产环境,因为性能开销太大。

Java Flight Recorder (JFR) 的出现就是为了解决这个痛点:

  • 几乎 零开销 的性能数据采集
  • JDK 深度集成,可直接记录 JVM 内部运行细节
  • 特别适合 线上生产环境 长时间运行

一句话概括:JFR = Java 应用的黑匣子


二、JFR 的核心功能

JFR 可以捕获和分析 JVM 内部的各种事件,主要包括:

  • 内存事件:对象分配、GC 行为、堆使用情况
  • 线程事件:线程状态、锁竞争、阻塞、CPU 占用
  • 类加载:类加载/卸载次数、耗时
  • I/O 事件:Socket、文件 I/O 延迟
  • JVM 内部事件:编译器 JIT 行为、Safepoint 停顿
  • 应用自定义事件:支持开发者自己埋点

这些信息几乎等同于你“实时观察 JVM 内部器官运作”,对性能诊断非常有价值。


三、JFR 的使用方法

1. 启动时开启 JFR

在启动 Java 应用时加上参数:

java -XX:StartFlightRecording=name=MyApp,filename=recording.jfr,duration=1m -jar myapp.jar
  • name:录制名称
  • filename:输出文件名
  • duration:持续时间,例如 1m 表示录制 1 分钟

2. 运行时动态开启 JFR(更常用)

使用 jcmd 命令可以在不重启 JVM 的情况下开启录制:

jcmd <pid> JFR.start name=profile duration=120s filename=app.jfr

结束录制:

jcmd <pid> JFR.stop name=profile

这样可以在问题出现时“即时打开黑匣子”。


3. 分析录制文件

录制下来的 .jfr 文件可以用 Java Mission Control (JMC) 打开:

jmc

JMC 提供了图形化分析界面,可以看到:

  • CPU 占用最高的方法
  • GC 停顿详情
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值