上一篇文章有提到,透過jcmd <pid> help
(或jcmd <pid>
)可以查看指定進程可使用的所有命令,接著這篇就要來大致介紹一些具體命令選項。
上面可以看到JFR
這命令選項,他可以收集有關JVM以及在其上運行的Java應用程序的數據,他相當於JVM的黑盒子,後面若有機會再來介紹它
以下範例拿Day10-JDK查看虛擬機配置訊息工具:jinfo這篇的範例進行程序的運行(Step1.~Step3.)
我在 Step3.透過jps取得的進程是4221,以下示範的指令記得將4413改為欲查看的進程id喔!
jcmd <pid> <options>
透過jcmd <pid> help
查到的options,可透過上面指令查看更詳細的相關訊息
若是想看該選項的作用,jcmd <pid> help <options>
GC.class_histogram
提供Java堆使用狀況的統計數據
jcmd 4221 GC.class_histogram
這指令看到的資訊就相當於jmap -histo <pid>
顯示的內容(Day11-JDK堆內存快照工具-jmap(一)基本應用)
GC.heap_dump
生成Java堆的hprof文件
jcmd 4221 GC.heap_dump <filename>
GC.heap_info
提供通用Java堆訊息
jcmd 4221 GC.heap_info
Thread.print
查看進程執行緒訊息
相當於jstack
命令所看到的內容(Day16-JDK堆棧跟蹤工具:jstack(一))
jcmd 4221 Thread.print
相當於jstack -l <pid>
(Day16-JDK堆棧跟蹤工具:jstack(二))
VM.uptime
查看指定進程運行了多久的時間
jcmd 4221 VM.uptime
VM.version
輸出JVM版本資料
jcmd 4221 VM.version