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行