JVisualVM 手動生成 Java Core Dump

最近在研究 Java Core Dump 查看及使用問題,這裏我採了JDK自帶工具 jvisualvm ,這個工具可協助生成 Java Core Dump 文件

 

1, Java Core Dump 文件是什麼 

Java Core Dump 文件呢,是針對 JVM 虛擬機發生致命問題或者 JVM 中運行的程序造成致命問題時,所產生的記錄文件,通常會存在2個文件

1.1,Java Core 文件,線程記錄文件,即 ThreadDump 文件

1.2,Head Dump 文件,Cpu. 內存,堆內存等信息記錄文件

2,JVM 可以做什麼

2.1,內存問題分析

2.2,線程問題分析

3,hs_err_pid.log 文件

在 JVM 出現異常宕機時,會生成 hs_err_pid1.log 日誌文件記錄, 文件名中 1 爲JAVA運行的進程ID,該文件記錄了 JVM 宕機時線程狀態,過程狀態等信息,可以用於基礎判定程序問題

4,生成 Java Core Dump 文件

Java環境變量如果配置Ok的話, CMD 下執行 jvisualvm 命令, 會啓動 jvisualvm 程序,此程序爲 JVM 狀態,內存,線程,Cpu等內容的監視工具

工具中,堆Dump 可生成 Head Dump 文件,文件格式爲 .hprof

線程Dump,可生成 Java Core 文件,也就是 ThreadDump 文件,文件格式爲 .tdump

此時,Java Core Dump 文件生成完畢

5, Java Core Dump 文件圖形化查看工具

生成的 Java Core Dump 的兩個文件查看,分別需要使用到2個不同的工具

Jac 工具《IBM Thread and Monitor Dump Analyzer for Java》:用於查看 ThreadDump 文件內容, Jac下載地址

Ha 工具《IBM HeapAnalyzer》:用於查看 HeadDump 文件內容, Ha下載地址

Jac 下載後的文件名 jacxxx.jar, xxx爲當前jac工具版本號

Ha 下載後的文件名 haxxx.jar, xxx爲當前jac工具版本號

java -jar jacxxx.jar/haxxx.jar 來啓動2個不同的工具,並導入對應的文件即可

圖例:

6,手動生成 ThreadDump 文件,目前未找到方法

7,手動生成 HeadDump 文件

手動生成HeadDump文件呢,需要使用到 jmap 命令

7.1,第一步,查看 java 程序運行進程編號

ps -ef | grep java

7.2,第二步,執行命令生成文件

jmap -dump:format=b,file=【存儲 HeadDump 文件】 【進程ID】

例:

jmap -dump:format=b,file=serviceDump.dat 1

7.3,第三步,使用 haxxx.jar 工具打開 HeadDump 文件即可查看

 

對於Java性能分析呢,不止 JVisualVM  一種工具, 還有其他很多工具及插件可以使用

當Java虛擬機報錯,或異常退出時,Linux 系統也會自動記錄一個 Core Demp 的文件,Linux系統默認是未開啓的,如果有需要,可以自行了解一下

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章