JVM-jstack查询线程堆栈信息-定位高消耗资源代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lsziri/article/details/84936127

参考:https://www.cnblogs.com/zhuqq/p/5938187.html

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,

参考我的另外文章
https://blog.csdn.net/lsziri/article/details/78179716

printf "%x\n"  线程ID
eg. printf "%x\n" 2459

猜你喜欢

转载自blog.csdn.net/lsziri/article/details/84936127