1.先找到程序的進程id
2.獲取進程的線程
jstack -F 18176
這個程序沒有被鎖死的線程,上圖信息中會寫哪一個線程被鎖死了
3 使用jdb連接JVM查看線程情況
jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=18176
4.查看線程列表
5.獲取某一個線程的堆棧信息
這樣能看見某一個線程的代碼執行情況
java 查看內存信息shell
jstat -gcutil 18176
查看某進程下所有線程使用cpu的列表
pidstat -p < PID > 1 3 -u -t
找到cpu較高的線程id 29900 10進制轉化爲16進製爲 74CC
查看線程74CC的堆棧信息輸出到當前目錄stack.log文件中
jstack pid > stack.log
線程的狀態:
NEW 未啓動的。不會出現在Dump中。
RUNNABLE 在虛擬機內執行的。
BLOCKED 受阻塞並等待監視器鎖。
WATING 無限期等待另一個線程執行特定操作。
TIMED_WATING 有時限的等待另一個線程的特定操作。
TERMINATED 已退出的。