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