jvm之监控与分析工具
一、JDK 自带命令行工具
1. jps
作用:查看当前 Java 进程、进程号
1 | |
日常第一步:先拿进程 PID。
2. jstat
作用:实时监控 GC 统计、内存分代使用、类加载
高频用法:
1 | |
可看:Eden、Survivor、老年代、元空间、GC 次数 / 耗时。
3. jmap
作用:内存快照、堆信息、对象统计、dump 堆文件
1 | |
4. jhat
作用:解析 dump 文件,启动网页端简单分析
现状:老旧、基本淘汰,生产一般用 MAT/VisualVM 替代
5. jstack(排查线程问题神器)
作用:打印线程快照、线程堆栈、锁、死锁
1 | |
排查场景:
- 线程死锁
- 死循环、CPU 飙高
- 阻塞、等待、锁等待
6. jinfo
作用:查看 / 动态修改 JVM 启动参数、系统属性
1 | |
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、线程
热修复、动态查看运行时变量
线上问题第一选择,不用重启服务。
四、面试高频场景对应工具
OOM 内存溢出
jmap导出 dump → MAT分析CPU 100%、线程卡死
jstack打印线程栈,定位死循环 / 死锁GC 频繁、卡顿、接口超时
jstat实时 GC + GC 日志 + GCViewer/VisualVM线上临时排查、看代码、查耗时
Arthas
全局综合监控、可视化
VisualVM / JMC
五、一句话背诵总结
- 命令行:jps 查进程、jstat 看 GC、jmap 导堆、jstack 查线程、jcmd 全能
- 自带可视化:JConsole、VisualVM、JMC
- 专业排查:MAT(内存)、GCViewer(GC 日志)、Arthas(线上诊断)
jvm之监控与分析工具
http://hanqichuan.com/2026/04/17/jvm/JVM之监控与分析工具/