http://my.oschina.net/feichexia/blog/196575
第一步先找出Java进程ID,我部署在服务器上的Java应用名称为mrf-center:
ps -ef | grep mrf-center
root 21711 1 1 14:47 pts``/3
00:02:10 java -jar mrf-center.jar
得到进程ID为21711
第二步找出该进程内最耗费CPU的线程,
可以使用ps -Lfp pid 或者 ps -mp pid -o THREAD, tid, time 或者 top -Hp pid, 我这里用第三个,输出如下:
20160307105042587.jpgTIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21742的线程,
用
printf
"%x\n"
21742
得到21742的十六进制值为54ee,下面会用到
OK,下一步终于轮到jstack上场了,它用来输出进程21711的堆栈信息,然后根据线程ID的十六进制值grep,如下:
jstack 21711 | grep 54ee
网友评论