文章目录
Java 监控与分析工具
在 Java 开发过程中,了解并掌握 JVM(Java 虚拟机)监控与分析工具对于排查性能问题、优化应用至关重要。
1. jstat —— Java 虚拟机统计监控工具
jstat
(Java Virtual Machine Statistics Monitoring Tool)是 JDK 自带的命令行工具,用于监控 JVM 的 GC(垃圾回收)行为、类加载、编译等。
常见用法
jstat -gc <pid> 1000 5 # 每隔1秒输出一次GC信息,共输出5次
jstat -gcutil <pid> 1000 # 监控GC利用率
jstat -class <pid> # 查看类加载信息
jstat -compiler <pid> # 查看JIT编译统计信息
2. jmap —— Java 内存映像工具
jmap
用于生成 JVM 内存快照(heap dump)并分析堆的使用情况。
常见用法
jmap -heap <pid> # 显示堆的使用情况
jmap -histo:live <pid> # 显示堆中存活对象的实例数量和大小
jmap -dump:live,format=b,file=heapdump.hprof <pid> # 生成堆转储快照
3. jstack —— 线程堆栈分析工具
jstack
用于查看 Java 进程中的线程状态,帮助排查死锁、高 CPU 占用等问题。
常见用法
jstack <pid> # 输出指定进程的线程堆栈信息
jstack -F <pid> # 强制输出线程堆栈(用于无法正常响应的进程)
jstack -l <pid> # 显示锁信息
4. VisualVM —— 图形化 Java 监控工具
VisualVM
是 JDK 自带的 GUI 工具,提供线程、堆、GC 监控及分析功能。
启动 VisualVM
jvisualvm
主要功能
- 监控 CPU、内存、GC 及线程信息
- 分析堆转储文件(heap dump)
- 分析线程 dump
- 采样(Profiling)代码执行性能
5. JConsole —— 轻量级 Java 监控工具
JConsole
是 Java 自带的 GUI 监控工具,提供基本的 JVM 监控能力。
启动 JConsole
jconsole
主要功能
- 查看内存使用情况
- 监控 GC 统计信息
- 监视线程活动
- 管理 MBeans(JMX 监控)
6. jinfo —— JVM 运行参数查询工具
jinfo
用于查询和修改 JVM 运行时参数。
常见用法
jinfo <pid> # 显示 JVM 配置信息
jinfo -flags <pid> # 显示 JVM 启动参数
jinfo -sysprops <pid> # 显示系统属性
7. jcmd —— 强大的一体化 JVM 诊断工具
jcmd
是功能最强大的 JVM 诊断工具,可以替代 jmap
、jstack
、jinfo
等工具。
常见用法
jcmd <pid> VM.flags # 查询 JVM 启动参数
jcmd <pid> Thread.print # 输出线程堆栈信息
jcmd <pid> GC.heap_dump filename=heapdump.hprof # 生成堆转储