Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • Java章节编写规范
  • Java基础

  • Java集合

  • Java并发

  • Java IO

  • JVM

    • JVM概述
    • JVM基础

    • 类加载机制

    • 运行时内存

    • 垃圾回收

    • 执行引擎与优化

    • 工具与问题排查

      • JVM参数
      • JDK命令行工具
      • jstack线程分析
      • jmap与堆转储分析
      • jcmd与JFR
        • 1. jcmd 是什么
        • 2. 常用 jcmd 命令
        • 3. JFR 是什么
        • 4. 启动 JFR
        • 5. 分析 JFR
        • 6. 什么时候用 JFR
        • 7. 阶段小结
        • 8. JFR 事件时间线
        • 9. JFR settings 选择
        • 10. Tips 快问快答
      • CPU飙高排查
      • 内存泄漏排查
      • 频繁Full GC排查
    • 调优实践与面试

目录

jcmd与JFR

jcmd 和 JFR 是现代 Java 诊断中非常重要的工具。jcmd 提供统一命令入口,JFR 可以低开销记录 JVM 和应用运行事件。

# 1. jcmd 是什么

jcmd 是 JDK 自带的诊断命令工具。

查看 Java 进程:

jcmd

查看某个进程支持的命令:

jcmd <pid> help

# 2. 常用 jcmd 命令

查看 JVM 参数:

jcmd <pid> VM.flags

查看系统属性:

jcmd <pid> VM.system_properties

打印线程:

jcmd <pid> Thread.print

查看堆信息:

jcmd <pid> GC.heap_info

类直方图:

jcmd <pid> GC.class_histogram

生成堆转储:

jcmd <pid> GC.heap_dump /data/dump/heap.hprof

# 3. JFR 是什么

JFR(Java Flight Recorder)是 JVM 内置事件记录系统,可以记录:

  • 方法 profiling。
  • 对象分配。
  • GC。
  • 锁竞争。
  • 线程状态。
  • IO。
  • 异常。
  • 类加载。

它适合生产环境低开销诊断。

# 4. 启动 JFR

使用 jcmd 启动:

jcmd <pid> JFR.start name=profile settings=profile filename=/data/profile.jfr duration=300s

查看 JFR:

jcmd <pid> JFR.check

停止并导出:

jcmd <pid> JFR.stop name=profile filename=/data/profile.jfr

# 5. 分析 JFR

JFR 文件可以用 JDK Mission Control 打开。

重点关注:

  • CPU 热点方法。
  • 分配热点。
  • GC 事件。
  • 锁竞争。
  • 线程阻塞。
  • Socket 和文件 IO。
  • 异常抛出频率。

JFR 的优势是能把多个维度放在同一条时间线上观察。

# 6. 什么时候用 JFR

适合:

  • CPU 高但线程栈不够明确。
  • 延迟抖动。
  • 分配速率异常。
  • 锁竞争。
  • GC 与业务延迟关联分析。
  • 偶发线上问题。

不适合:

  • 已经明确的简单配置问题。
  • 无法承受任何额外开销的极端场景。

# 7. 阶段小结

jcmd 是现代 JVM 诊断的统一入口,JFR 是低开销运行时记录工具。相比只看单次线程栈或堆 dump,JFR 能把 CPU、分配、GC、锁和 IO 事件放在时间线上,是排查复杂性能问题的重要武器。

# 8. JFR 事件时间线

时间轴
10:00:01  Socket Read 慢
10:00:02  大量对象分配
10:00:03  Young GC 80ms
10:00:04  Monitor Blocked
10:00:05  接口 RT 抖动

JFR 的价值是把不同类型事件放在同一时间线上,帮助判断因果关系。

# 9. JFR settings 选择

settings 特点 适用
default 开销低,信息适中 长时间生产观察
profile 信息更多,开销更高 短时间性能分析

生产环境通常先用 default 长时间记录;定位热点时短时间使用 profile。

# 10. Tips 快问快答

Q:JFR 可以线上开吗?

A:通常可以,尤其是 default 配置开销较低。但仍应结合业务敏感度评估。

Q:JFR 和 APM 有什么区别?

A:APM 更偏业务链路和服务监控,JFR 更贴近 JVM 内部事件。

Q:JFR 能替代 heap dump 吗?

A:不能。JFR 能看分配趋势和热点,heap dump 更适合分析完整对象引用链。

Q:jcmd 需要应用提前开启什么吗?

A:大部分基础命令不需要,但 JFR 能力依赖 JDK 支持和运行权限。

上次更新: 2026/06/24, 16:03:01
jmap与堆转储分析
CPU飙高排查

← jmap与堆转储分析 CPU飙高排查→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式