jvm排查常用命令

jps #簡單java進程信息

jps -l #顯示完整包名路徑信息

jps -lv #更詳細的信息

jstack pid #打印線程狀態、棧使用情況

jstack -l pid

jstack -m pid

如果 -l 和 -m 都不起作用的時候,可以使用 java -F pid 強制 dump。

jstack -l pid | grep 'java.lang.Thread.State' | wc -l  #jstack統計線程數

ps hH p pid | wc -l #查看線程個數

jinfo pid #查看 jvm 參數和系統參數

jmap #查看給定進程、核心文件、遠程調試服務器的共享對象內存映射和堆內存細節的工具,可查看堆使用情況、堆內對象直方圖、加載類、生成堆快照等。

jstat -gcutil -h 3 26786 3s 50  #-h 3 表示每 3 行輸出一次標題信息,3s 5 表示每 3s 輸出一次,一共輸出 5 次

jmap -heap pid #查看jvm信息, 例如堆heap佔用情況

jmap -histo:live  pid > /tmp/histo.log #統計存活實例個數

jmap -dump:live,format=b,file=a.dmp pid #監視進程運行中的jvm物理內存的佔用情況

jmap -dump:format=b,file=a.dmp pid

jcmd pid GC.heap_dump /tmp/jcmd_heap_dump.hprof  #導出堆dump文件

定位cpu線程

1, top -H -p pid #查看cpu佔用高線程 17880

2, printf "%x\n" 17880 #轉換線程ID 

3, jstack pid|grep 45d8 -A 30  #定位cpu佔用線程 打印10行

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