有些時(shí)候我們需要查看jvm的線程執(zhí)行情況朋腋,如:發(fā)現(xiàn)服務(wù)器的CPU的負(fù)載突然增高了爱沟,出現(xiàn)了死鎖,死循環(huán)救崔,我們?cè)撊绾畏治瞿兀窟@個(gè)時(shí)候就要借助jstack命令了,jstack的作用就是將正在運(yùn)行的jvm的線程進(jìn)行快照店雅,并且打印出來(lái)
jstack <pid>
jstack 2214
一、jstack 命令參數(shù)
image
二贞铣、jstack解決問(wèn)題
1闹啦、死循環(huán)導(dǎo)致cpu飆高
死循環(huán)的例子:https://blog.csdn.net/goldenfish1919/article/details/8755378
步驟:查找進(jìn)程--->>查找線程--->>分析threadDump日志--->>找出問(wèn)題代碼
a、查看cpu高的java進(jìn)程
top
b辕坝、生成進(jìn)程下所有線程的棧日志
jstack 1721 > 1712.txt
c窍奋、查看進(jìn)程下哪些線程占用了高的cpu
top -p 1712 -H
d、將十進(jìn)制pid轉(zhuǎn)換為十六進(jìn)制的pid
printf "%x" 8247
2037
2、死鎖問(wèn)題定位
image