转自 爪哇堂的博客html
正如Thread Dump文件记录了当时JVM中线程运行的状况同样,Heap Dump记录了JVM中堆内存运行的状况,可以使用jmap或JConsole命令生成,jhat分析。java
【使用 jmap 命令生成】多线程
jmap 命令是JDK提供的用于生成堆内存信息的工具,能够执行下面的命令生成Heap Dump:oracle
jmap -dump:live,format=b,file=heap-dump.bin <pid>
其中的pid是JVM进程的id,heap-dump.bin
是生成的文件名称,在执行命令的目录下面。推荐此种方法。jvm
【使用JConsole生成】工具
JConsole是JDK提供的一个基于GUI查看JVM系统信息的工具,既能够管理本地的JVM,也能够管理远程的JVM,能够经过下图的 dumpHeap
按钮生成 Heap Dump文件。性能
【使用jhat分析】spa
jhat 是JDK自带的用于分析JVM Heap Dump文件的工具,使用下面的命令能够将堆文件的分析结果以HTML网页的形式进行展现:.net
jhat <heap-dump-file>
其中 heap-dump-file 是文件的路径和文件名,能够使用 -J-Xmx512m
参数设置命令的内存大小。执行成功以后显示以下结果:线程
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
这个时候访问 http://localhost:7000/ 就能够看到结果了。
可以使用jstack查看,定位线程出现长时间停顿的缘由。