jstack主要用來查看某個Java進程內的線程堆棧信息,根據堆棧信息我們可以定位到具體代碼,所以它在JVM性能調優中使用得非常多,語法格式如下:
jstack [option] pid jstack [option] executable core jstack [option] [server-id@]remote-hostname-or-ip 命令行參數選項說明如下: -l long listings,會打印出額外的鎖信息,在發生死鎖時可以用jstack -l pid來觀察鎖持有情況 -m mixed mode,不僅會輸出Java堆棧信息,還會輸出C/C++堆棧信息(比如Native方法)
執行下面命令,獲取到java進行pid
ps -ef|grep cluemanage
執行下面命令查看最耗時的線程
top -Hp 12600
?從上面看到12735線程最費時間
執行下面命令
printf "%x\n" 12735
31bf
計算出16進制數據
執行下面命令。就可以查看線程使用情況
jstack 12600 |grep 31bf
?
一種更簡單的方式,可以吧jstack日志打到指定的文件,然后查看
jstack 20468 > test.txt
vim test.txt
?