主题切换
JVM调优工具
整体分为两大类:命令行工具(服务器无图形界面排查)、可视化GUI工具(本地直观监控分析)。
一、命令行工具
1. jps
作用:列出本机所有Java进程PID、进程名称,是所有JVM命令的前置工具。
shell
jps输出示例:进程PID + 启动类名/Jar标识。
2. jstack
作用:打印指定Java进程全部线程堆栈信息,定位死锁、死循环、线程阻塞、CPU飙高问题。
shell
jstack <pid>输出包含线程状态(RUNNABLE/WAITING/BLOCKED)、方法调用栈、锁持有信息。
3. jmap
作用:查看堆内存概况、生成堆dump快照文件,用于事后内存泄漏分析。 常用命令:
shell
# 查看堆整体内存分区使用
jmap -heap <pid>
# 导出二进制堆快照dump文件
jmap -dump:format=b,file=heap.hprof <pid>dump文件是进程内存快照,包含对象、线程、栈、异常数据,用于离线分析内存溢出。
4. jhat
作用:离线解析jmap导出的hprof堆快照,内置简易web服务查看对象占用、引用链。
shell
jhat heap.hprof5. jstat
作用:实时持续采集JVM运行统计数据,重点监控GC、类加载、内存占用。
jstat -gcutil <pid>:汇总GC统计,展示各代内存占比、YGC/FGC次数与总耗时jstat -gc <pid>:打印新生代/老年代/元空间实时内存容量、已使用大小
二、可视化GUI工具
1. jconsole
基于JMX的轻量图形监控工具,JDK bin目录下jconsole.exe直接启动。 监控维度:堆内存曲线、线程列表、类加载数量、CPU使用率,适合简单线上本地监控。
2. VisualVM(jvisualvm)
功能更强的官方可视化工具,bin目录jvisualvm.exe启动。 核心能力:
- 实时监控内存、线程、CPU;
- 手动生成堆dump快照,在线分析对象占用、引用链;
- 性能抽样Profiler,定位消耗CPU/内存的方法;
- 支持远程Java进程连接监控。
三、面试简答
问:JVM有哪些自带调优监控工具,分别用途是什么?
答:
- 命令行工具(服务器环境)
- jps:查询Java进程PID;
- jstack:打印线程栈,排查死锁、高CPU、线程阻塞;
- jmap:查看堆内存,导出hprof堆转储文件;
- jhat:解析dump堆快照,离线分析内存泄漏;
- jstat:实时监控GC、各代内存使用统计。
- 可视化GUI工具(本地Windows/开发机)
- jconsole:简易JMX图形监控,查看内存、线程、类加载;
- VisualVM:功能完善,支持实时监控、dump分析、性能抽样Profiler,JDK自带推荐使用。