轉自 爪哇堂的博客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查看,定位線程出現長時間停頓的緣由。