执行top查看cpu过高的进程:
top -H -p 32933 查看其内部线程:
cpu占用最高的是33215
printf "%x\n" 33215 获取33215的8进制值 81bf
jstack -l 32933 > tempfile.txt 打印堆栈日志
jmap -dump:format=b,file=heap1.hprof 32933
可以查看jstack 指令的用法,注意:这里的pid不能直接用33215 ,要用父级线程的pid,不然会报错
Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
解决方式:https://blog.csdn.net/u011250186/article/details/99676292
但过于麻烦,直接就用父进程的id导出jstack -l 32933 > tempfile.txt,就可以了
然后在tempfile.txt 文件中根据查找81bf,就能找到33215 的信息。
红色的就是我自己的代码中的问题代码,这样就能定位到自己的代码问题了。
来源:oschina
链接:https://my.oschina.net/u/3971821/blog/4482487