jstack的使用
2022-03-05 本文已影响0人
西谷haul
有些时候我们需要查看jvm的线程执行情况,如:发现服务器的CPU的负载突然增高了,出现了死锁,死循环,我们该如何分析呢?这个时候就要借助jstack命令了,jstack的作用就是将正在运行的jvm的线程进行快照,并且打印出来
jstack <pid>
jstack 2214
一、jstack 命令参数
image二、jstack解决问题
1、死循环导致cpu飙高
死循环的例子:https://blog.csdn.net/goldenfish1919/article/details/8755378
步骤:查找进程--->>查找线程--->>分析threadDump日志--->>找出问题代码
a、查看cpu高的java进程
top
b、生成进程下所有线程的栈日志
jstack 1721 > 1712.txt
c、查看进程下哪些线程占用了高的cpu
top -p 1712 -H
d、将十进制pid转换为十六进制的pid
printf "%x" 8247
2037
2、死锁问题定位
image