高手是怎么使用jstack精确找到异常代码的(java程序CPU利用率高的情况)
请jstack神器来帮忙
本文介绍Linux环境下使用jstack定位问题的秘笈
1.【top命令】找到CPU利用率持续比较高的进程,获取[进程号],此处PID为 12891
12891
2.【ps p 12891 -L -o pcpu,pid,tid,time,tname,cmd 命令】找到上述进程中,CPU利用率比较高的[线程号TID](十进制数),此处为 12946
ps p 12891 -L -o pcpu,pid,tid,time,tname,cmd
12946
3.【printf "%x\n" 12946命令】将获取的线程号(十进制数)转换成[十六进制],此处为 0x3292
printf "%x\n" 12946
3292
4.【jstack -l 12946 】查看进程PID为3036中,nid为 0x3292 的线程信息
jstack -l 12891 > /home/temp1 & vi /home/temp1 搜索到 0x3292 ,看到代码位置