Java问题排查常用命令行工具速查表

发布于:2025-05-15 ⋅ 阅读:(16) ⋅ 点赞:(0)

Java问题排查常用命令行工具速查表

工具 典型用途 常用命令示例 说明/场景
jps 列出本机所有Java进程 jps -l 获取Java进程PID和主类名,配合其它工具使用
jcmd 动态诊断、堆heap dump、线程dump等 jcmd help
jcmd VM.flags
jcmd GC.heap_info
jcmd Thread.print
功能最全,替代jmap/jstack/jinfo等
jinfo 查看/调整JVM参数 jinfo -flags 查看JVM启动参数、运行参数
jstat 监控JVM内存、GC等统计 jstat -gc 1000 5 观察GC频率、各代内存使用情况
jmap 生成堆dump、对象直方图、类信息 jmap -dump:format=b,file=heap.hprof 堆分析、内存泄漏定位
jstack 导出线程栈快照 jstack > threads.txt 死锁、线程阻塞、CPU高分析
jhat 分析堆转储文件(已被MAT/VisualVM替代) jhat heap.hprof 简单web界面分析heap dump(不推荐新项目)
javap 反编译class文件 javap -c -l MyClass 分析字节码,定位优化点,或排查热部署问题
lsof 查看进程打开的文件和网络连接 lsof -p 排查文件句柄泄漏、网络连接泄漏
strace 跟踪系统调用(Linux) strace -p 深度排查IO阻塞、native层调用
perf/top 性能火焰图、系统级CPU热点 perf top -p 分析本地方法、JVM与操作系统之间的性能瓶颈
gcore 生成进程core dump(Linux) gcore JVM崩溃、native崩溃分析,配合gdb使用
netstat 网络连接、端口监听 netstat -anop grep
vmstat/iostat 系统内存、IO负载 vmstat 1 5 / iostat -d 1 5 JVM卡顿是否由系统资源瓶颈导致
ps 进程状态、资源占用 ps -p -o pid,pcpu,pmem,etime,cmd 结合top,监控JVM资源消耗

常用工具能力简述

1. jcmd(推荐)

  • 现代JVM诊断首选,几乎覆盖jmap、jstack、jinfo所有功能,且不易崩溃。
  • 实用命令:
    jcmd <pid> help
    jcmd <pid> VM.flags                # 查看JVM参数
    jcmd <pid> GC.heap_info            # 内存分布
    jcmd <pid> Thread.print            # 线程栈快照
    jcmd <pid> GC.class_histogram      # 类实例统计
    jcmd <pid> GC.heap_dump /tmp/heap.hprof   # 堆转储
    

2. jinfo

  • JVM参数和值的查询,调优时必备。
  • 常用:
    jinfo -flags <pid>
    

3. lsof

  • 文件句柄、端口泄漏排查利器,适合定位“Too many open files”等问题。

4. strace

  • 跟踪系统调用,常用于排查阻塞、native方法问题(如JNI、文件IO hang)。

5. perf/top

  • 分析JVM与系统层面的CPU热点,结合火焰图可定位本地方法/系统瓶颈。

6. ps/vmstat/iostat

  • 辅助判断JVM外部资源瓶颈,如CPU、内存、磁盘IO。

场景举例

  • 线程死锁/卡顿:jstack/jcmd Thread.print
  • 内存泄漏:jmap/jcmd GC.heap_dump + MAT/VisualVM
  • 文件/网络连接泄漏:lsof/netstat
  • JVM参数核查:jcmd VM.flags / jinfo -flags
  • GC频繁/老年代溢出:jstat -gcutil
  • 系统级卡顿:vmstat/iostat/top/perf

小结

  • jcmd 是现代JVM诊断的“瑞士军刀”,建议优先掌握。
  • 结合 lsof、strace、netstat、ps、vmstat 等系统工具,可实现从JVM到操作系统的全链路排查。
  • 建议根据实际问题场景选择合适工具,组合使用效果更佳。

建议收藏本表,线上问题排查时对照使用,效率倍增!


网站公告

今日签到

点亮在社区的每一天
去签到