jvm之监控与分析工具

一、JDK 自带命令行工具

1. jps

作用:查看当前 Java 进程、进程号

1
jps -l   # 展示进程ID + 全类名/jar包

日常第一步:先拿进程 PID。


2. jstat

作用:实时监控 GC 统计、内存分代使用、类加载

高频用法:

1
2
# 每500毫秒打印一次GC概况
jstat -gc 进程ID 500

可看:Eden、Survivor、老年代、元空间、GC 次数 / 耗时。


3. jmap

作用:内存快照、堆信息、对象统计、dump 堆文件

1
2
3
4
5
# 查看堆概要
jmap -heap 进程ID

# 生成堆快照(排查OOM核心)
jmap -dump:format=b,file=heap.hprof 进程ID

4. jhat

作用:解析 dump 文件,启动网页端简单分析

现状:老旧、基本淘汰,生产一般用 MAT/VisualVM 替代


5. jstack(排查线程问题神器)

作用:打印线程快照、线程堆栈、锁、死锁

1
jstack 进程ID

排查场景:

  • 线程死锁
  • 死循环、CPU 飙高
  • 阻塞、等待、锁等待

6. jinfo

作用:查看 / 动态修改 JVM 启动参数、系统属性

1
jinfo -flags 进程ID

7. jcmd

全能整合工具,替代以上大部分命令,功能最全

  • 线程 dump、堆 dump、GC 分析、性能统计
  • 生产推荐优先使用

二、可视化工具

1. JConsole

JDK 自带、轻量、简易可视化

监控:堆内存、线程、类加载、GC、死锁检测

2. VisualVM

JDK 自带,功能强于 JConsole

  • 远程监控、线程分析、GC 可视化
  • 导入 hprof 堆文件初步分析
  • 免费、开箱即用

3. JMC(Java Mission Control)

低损耗监控、飞行记录器(Flight Recorder)

适合:线上低压力采样、性能溯源、JVM 运行轨迹分析


三、专业分析工具(生产实战)

1. MAT(Eclipse Memory Analyzer)

OOM 内存分析首选

  • 解析大堆 dump 文件
  • 查找大对象、内存泄漏、支配树、可疑泄露报告

2. GCViewer

导入 GC 日志,图形化分析 GC 频率、停顿时间、吞吐量、GC 问题定位

3. Arthas 阿里开源(线上诊断神器)

线上无停机实时排查:

  • 查看类、方法、动态反编译

  • 监控方法耗时、CPU、线程

  • 热修复、动态查看运行时变量

    线上问题第一选择,不用重启服务。


四、面试高频场景对应工具

  1. OOM 内存溢出

    jmap 导出 dump → MAT分析

  2. CPU 100%、线程卡死

    jstack 打印线程栈,定位死循环 / 死锁

  3. GC 频繁、卡顿、接口超时

    jstat实时 GC + GC 日志 + GCViewer/VisualVM

  4. 线上临时排查、看代码、查耗时

    Arthas

  5. 全局综合监控、可视化

    VisualVM / JMC


五、一句话背诵总结

  • 命令行:jps 查进程、jstat 看 GC、jmap 导堆、jstack 查线程、jcmd 全能
  • 自带可视化:JConsole、VisualVM、JMC
  • 专业排查:MAT(内存)、GCViewer(GC 日志)、Arthas(线上诊断)

jvm之监控与分析工具
http://hanqichuan.com/2026/04/17/jvm/JVM之监控与分析工具/
作者
韩启川
发布于
2026年4月17日
许可协议