常見的Java故障排除-jcmd

????????jcmd實用工具用于向JVM發(fā)送診斷命令請求,這些請求主要用于控制 Java Flight Recordings,診斷和排除JVM和JAVA應用程序故障。該命令必須在JVM運行的機器上使用,同時必須是和啟動JVM擁有相同權限的用戶和用戶組。
????????更具體的jcmd語句和用法可以查看jcmd command man page
????????該命令jcmd <process id/main class> PerfCounter.print會將程序中所有的性能計數(shù)打印出來。
????????jcmd <process id/main class> <command> [options]會向JVM發(fā)送實際的命令。
????????以下的例子是如何用jcmd向JVM發(fā)送診斷命令:

jcmd <pid> help

jcmd <pid> Thread.print

????????上面這張圖沒有截全,感興趣的可以自己操作下。

Useful Commands for jcmd Utility

????????不同版本的HotSpot VM,可用的診斷命令可能也會不同。因此,查看可用選項的最好方式是使用 jcmd <process id/main class> help命令。以下一些命令是在Java8中比較常用的命令。如果你想獲取這些命令的額外選項可以使用 jcmd <process id/main class> help <command>。

  • Print full HotSpot and JDK version ID
    jcmd <process id/main class> VM.version

  • Print all the system properties set for a VM
    可能會有幾百行信息被展示。
    jcmd <process id/main class> VM.system_properties

  • Print all the flags used for a VM
    即使你沒有提供任何開關,一些默認的值也會被打印出來,例如初始化的堆大小和最大的堆大小。
    jcmd <process id/main class> VM.flags

  • Print the uptime in seconds
    jcmd <process id/main class> VM.uptime

  • Create a class histogram
    結(jié)果會在控制臺打印出來,所以你也可以將其重定向到文件中。輸出列表中既包含了應用程序編寫的類也包含了Java的內(nèi)部類。占用內(nèi)存最多的類會被羅列在最上方,按占用內(nèi)存大小降序排序。
    jcmd <process id/main class> GC.class_histogram

  • Create a heap dump (hprof dump)
    jcmd GC.heap_dump <filename>
    該用法與jmap -dump:file=<file> <pid>相同,不過jcmd是推薦的使用工具。

  • Create a heap histogram
    jcmd <process id/main class> Thread.print

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容