1. 确保JFR可用
Java Flight Recorder是JDK自带的,从Java 11开始,它是开源并默认可用的。如果你使用的是Java 11或更高版本,通常可以直接使用。如果是Java 8,则需要商业许可证。
2. 启动JFR
在启动Java应用时,可以通过命令行参数启用JFR。常用的启动方式有两种:
-
命令行启动:
在启动Java应用时,添加以下参数:java -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr -jar myapp.jar
这里,
duration=60s
表示记录60秒,filename=myrecording.jfr
指定输出文件的名称。 -
JMX或JMC启动:
可以使用Java Mission Control(JMC)来启动和控制JFR。JMC是一个图形化工具,提供了更丰富的控制和分析功能。
3. 记录数据
JFR会在后台记录应用的性能数据,包括线程活动、内存使用、方法调用、锁争用等。你可以根据需要设置不同的参数来记录不同类型的数据。
4. 分析数据
一旦记录完成,你可以使用JMC来打开和分析.jfr
文件。JMC提供了各种视图和分析工具,帮助你查看和理解应用的性能数据。例如:
- 概览:查看总体性能指标,如CPU使用率、内存分配等。
- 线程分析:查看线程的活动和状态,识别线程阻塞或死锁问题。
- 内存分析:查看内存使用情况,识别内存泄漏或不必要的对象分配。
- 方法分析:查看方法调用的频率和耗时,识别性能瓶颈。
5. 优化应用
根据JFR提供的分析结果,你可以识别应用的性能瓶颈,比如某些方法耗时过长、线程争用严重、内存使用不合理等。然后可以针对这些问题进行优化,比如修改代码逻辑、调整线程策略、优化内存分配等。
总结
- 启用JFR:通过命令行或JMC启动JFR。
- 记录数据:让JFR在后台记录应用的性能数据。
- 分析数据:使用JMC打开和分析记录文件,识别性能问题。
- 优化应用:根据分析结果优化应用性能。