1. 程式人生 > >JVM調優前戲之JDK命令列工具---jhat

JVM調優前戲之JDK命令列工具---jhat

在JDK的命令列中,一般開發人員最耳熟能詳的肯定就是java,javac,javap等常用命令,不過在jdk/bin下還有許多其他的命令列工具,它們被用來監測JVM執行時的狀態,下面我們來詳細解讀一下幾個常用的工具以及如何使用。

jhat

jhat(JVM Heap Analysis Tool)命令是與jmap搭配使用,用來分析jmap生成的dump,jhat內建了一個微型的HTTP/HTML伺服器,生成dump的分析結果後,可以在瀏覽器中檢視。在此要注意,一般不會直接在伺服器上進行分析,因為jhat是一個耗時並且耗費硬體資源的過程,一般把伺服器生成的dump檔案複製到本地或其他機器上進行分析。

命令格式

jhat [dumpfile]

示例

$ jhat -J-Xmx512m dump.hprof
eading from dump.hprof...
Dump file created Fri Mar 11 17:13:42 CST 2016
Snapshot read, resolving...
Resolving 271678 objects...
Chasing references, expect 54 dots......................................................
Eliminating duplicate references......................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

中間的-J-Xmx512m是在dump快照很大的情況下分配512M記憶體去啟動HTTP伺服器,執行完之後就可在瀏覽器開啟Http://localhost:7000進行快照分析 堆快照分析主要在最後面的Heap Histogram裡,裡面根據class列出了dump的時候所有存活物件。

高能tips

分析同樣一個dump快照,MAT需要的額外記憶體比jhat要小的多的多,所以建議使用MAT來進行分析,當然也看個