JDK自带的四大命令行工具(jstat/jstack/jmap/jhat)的使用详解
JDK自带的jstat、jstack、jmap、jhat四大命令行工具,无需额外安装即可用于定位Java应用性能瓶颈、内存泄漏、死锁及CPU飙高等问题。jstat监控GC和内存,jstack排查线程死锁,jmap导出堆快照,jhat分析堆内存,覆盖常见线上问题排查场景。
这四个是 JDK 自带的线上问题排查核心工具,专门用于定位 Ja va 应用的性能瓶颈、内存泄漏、死锁、CPU 飙高等问题。最关键的一点:它们不需要额外安装,只要装了 JDK 就能用。

接下来,我们直接进入正题,用最实用、最常用的命令,告诉你:什么时候用、怎么用、看什么。
一、先准备:获取 Ja va 进程 ID
所有工具的第一步,都需要找到目标 Ja va 应用的进程 ID(PID)。执行以下命令即可:
jps -l
输出示例:
12345 com.example.Application
67890 sun.tools.jps.Jps
其中,12345 就是你的 Ja va 应用 PID。
1. jstat:JVM 统计信息监控工具(看性能、GC)
作用:查看类加载、内存使用、GC 频率/耗时,常用于排查 GC 频繁、内存占用高等问题。
最常用命令
1)查看 GC 概况(最常用)
jstat -gc 12345 1000 10
1000:每隔 1000ms(1秒)输出一次10:总共输出 10 次
关键字段:
S0C/S1C:Survivor 区大小E:Eden 区使用比例O:老年代使用比例YGC/YGT:Young GC 次数/耗时FGC/FGT:Full GC 次数/耗时GCT:GC 总耗时
排查技巧:
- FGC 快速上涨 ➜ 老年代内存泄漏
- YGC 每秒多次 ➜ 短生命周期对象过多
2)查看堆内存使用百分比
jstat -gcutil 12345
2. jstack:堆栈跟踪工具(看线程、死锁、CPU 飙高)
作用:导出线程堆栈,排查死锁、线程阻塞、CPU 100%、程序假死。
最常用命令
1)导出所有线程堆栈(保存到文件分析)
jstack 12345 > thread.log
2)直接排查死锁(自动检测)
jstack -l 12345
文件末尾会显示:Found one Ja va-level deadlock
排查 CPU 飙高高阶用法
先找到 CPU 占用最高的线程 ID:
top -H -p 12345
将线程 ID 转成 16 进制:
printf "%xn" 12345
接着,在 jstack 日志中搜索这个 16 进制 ID,就能定位到具体的耗时代码。
3. jmap:内存映像工具(导出堆、看对象)
作用:导出堆内存快照(dump 文件),查看堆内对象数量、大小,定位内存泄漏。
最常用命令
1)导出堆快照(排查内存泄漏必备)
jmap -dump:format=b,file=heap.hprof 12345
heap.hprof:二进制堆文件,可导入工具分析- 注意:导出时会暂停 JVM,生产环境谨慎使用
2)查看堆中对象统计(数量+大小)
jmap -histo 12345 | head -20
输出:序号、实例数、字节数、类名
能直接看到哪个类的对象最多,快速锁定泄漏点。
3)查看 JVM 堆配置
jmap -heap 12345
查看新生代、老年代大小、垃圾回收器等信息。
4. jhat:堆快照分析工具(分析 hprof 文件)
作用:解析 jmap 导出的 hprof 堆快照,提供 Web 界面查看内存对象。
注意:jhat 功能相对简单,大型堆文件建议用 MAT(Eclipse Memory Analyzer),jhat 更适合快速、简单的分析场景。
使用命令
jhat -port 9999 heap.hprof
- 启动后访问:
http://localhost:9999 - 页面可查看:所有对象、引用关系、泄漏疑点
二、快速使用场景总结(直接背这个)
| 工具 | 核心用途 | 最常用命令 |
|---|---|---|
| jstat | 看 GC、内存使用率、性能监控 | jstat -gc PID 1000 10 |
| jstack | 看线程、死锁、CPU 飙高 | jstack -l PID > thread.log |
| jmap | 导出堆快照、看对象数量 | jmap -dump:file=heap.hprof PID |
| jhat | 分析堆快照(Web 界面) | jhat -port 9999 heap.hprof |
三、标准问题排查流程(实战)
- CPU 飙高:
top→jstack→ 定位耗时代码 - 内存飙升/泄漏:
jstat -gc看 FGC →jmap导出 dump →jhat/MAT分析 - 程序卡死:
jstack查死锁、阻塞线程 - GC 频繁:
jstat -gcutil定位 GC 问题
总结
- jstat:监控 GC 和内存使用,不暂停应用
- jstack:抓线程堆栈,查死锁、CPU 高
- jmap:导出堆快照,查对象泄漏
- jhat:简单分析堆快照(推荐用 MAT 替代)
这四个工具是 Ja va 线上问题排查的基础必备技能。记住这些常用命令,足以应对 80% 的 JVM 问题。
WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许
Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator
Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。













