1、语法
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方法)
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。
2、查找jvm进程
jps -lvm
ps -aux | grep xxxx
ps -ef | grep xxxx
3、查找进程内最耗费CPU的线程
假如: 步骤2中的pid = 21711
可以使用找到最耗费CPU的线程
ps -Lfp pid
top -Hp pid,
参考我的另外文章
printf "%x\n" 线程ID
eg. printf "%x\n" 2459