天天看點

JVM性能調優之常用指令Jstack

作者:貴哥說Java創業

Jstack

常用指令格式如下:

jstack  <pid>           

輸出格式如下;

JVM性能調優之常用指令Jstack

輸出說明:

"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

JVM性能調優之常用指令Jstack

2,按H,擷取每個線程的記憶體情況

JVM性能調優之常用指令Jstack

3,找到記憶體和cpu占用最高的線程tid,比如19664

4,轉為十六進制得到 0x4cd0,此為線程id的十六進制表示

5,執行 jstack 19663|grep -A 10 4cd0,得到線程堆棧資訊中 4cd0 這個線程所在行的後面10行,從堆棧中可以發現導緻cpu飙高的調用方法。

6,檢視對應的堆棧資訊找出可能存在問題的代碼。