1. jps(Java Virtual Machine Process Status Tool)
-
功能:列出当前用户的所有 Java 进程及其 PID。
-
常用场景:快速定位目标 Java 应用的进程 ID。
-
常用命令:
bash复制
jps -l # 显示主类全名 jps -v # 显示 JVM 启动参数
2. jstat(JVM Statistics Monitoring Tool)
-
功能:实时监控 JVM 内存、GC、类加载等状态。
-
常用场景:监控垃圾回收(GC)性能,分析内存使用情况。
-
常用命令:
bash复制
jstat -gcutil <pid> 1000 10 # 每 1 秒采样 GC 状态,共 10 次 jstat -class <pid> # 类加载统计
3. jmap(Memory Map Tool)
-
功能:生成堆转储文件(Heap Dump)或查看堆内存对象分布。
-
常用场景:分析内存泄漏、排查内存溢出问题。
-
常用命令:
bash复制
jmap -heap <pid> # 查看堆内存使用详情 jmap -histo:live <pid> # 统计存活对象 jmap -dump:format=b,file=/path/to/dump.hprof <pid> # 生成堆转储文件
4. jstack(Stack Trace Tool)
-
功能:生成线程快照,用于分析线程死锁或高 CPU 问题。
-
常用场景:排查线程死锁、分析线程状态。
-
常用命令:
bash复制
jstack <pid> > thread_dump.txt # 输出线程快照到文件
5. jcmd(JVM Command Tool)
-
功能:多功能工具,支持 GC、类加载、线程等诊断。
-
常用场景:动态调整 JVM 参数、生成堆转储文件、打印线程信息等。
-
常用命令:
bash复制
jcmd <pid> VM.flags # 查看 JVM 参数 jcmd <pid> GC.heap_info # 查看堆内存信息 jcmd <pid> Thread.print # 打印线程快照
6. jinfo(Java Information Tool)
-
功能:查看和动态修改 JVM 的运行时参数。
-
常用场景:查看 JVM 启动参数、动态调整参数。
-
常用命令:
bash复制
jinfo -flags <pid> # 查看 JVM 参数 jinfo -flag +HeapDumpBeforeFullGC <pid> # 动态启用 HeapDumpBeforeFullGC
7. jhat(Heap Analysis Tool)
-
功能:分析 jmap 生成的堆转储文件(Heap Dump)。
-
常用场景:分析内存泄漏、排查对象占用情况。
-
常用命令:
bash复制
jhat /path/to/dump.hprof # 启动 HTTP 服务器,通过浏览器访问分析结果
8. jconsole(Java Monitoring and Management Console)
-
功能:图形化工具,用于监控 JVM 的内存、线程、类加载等信息。
-
常用场景:开发环境中的实时监控和调优。
-
使用方法 :直接启动
jconsole
,选择目标进程进行监控。
9. jmc(Java Mission Control)
-
功能:高级的图形化监控工具,支持飞行记录器(Flight Recorder)功能。
-
常用场景:生产环境中的性能监控和问题诊断。
-
使用方法 :启动
jmc
,连接到目标 JVM,进行实时监控或分析飞行记录。
总结
这些工具各有用途,可以根据实际需求选择合适的工具:
-
开发环境:优先使用图形化工具(如 jconsole、jmc)。
-
生产环境:推荐使用低开销工具(如 jcmd、jstat)。
-
深度分析:结合日志分析工具(如 jmap + jhat、MAT)进行优化。