Jstack
常用指令格式如下:
jstack <pid>
輸出格式如下;
輸出說明:
"Thread-1" :線程名。
prio=5 :優先級=5。
tid=0x000000001fa9e000 :線程id。
nid=0x2d64 :線程對應的本地線程辨別nid。
java.lang.Thread.State: BLOCKED :線程狀态。
jstack找出占用cpu最高的線程堆棧資訊
使用指令top -p <pid> ,顯示你的java程序的記憶體情況,pid是你的java程序号,比如19663
2,按H,擷取每個線程的記憶體情況
3,找到記憶體和cpu占用最高的線程tid,比如19664
4,轉為十六進制得到 0x4cd0,此為線程id的十六進制表示
5,執行 jstack 19663|grep -A 10 4cd0,得到線程堆棧資訊中 4cd0 這個線程所在行的後面10行,從堆棧中可以發現導緻cpu飙高的調用方法。
6,檢視對應的堆棧資訊找出可能存在問題的代碼。