Java定位CPU使用100%的方法
流程:把线程dump出来,然后分析
1:Threaddump的方法:
2:找到导致cpu高的线程
top -H -p pid
? PID USER????? PR? NI? VIRT? RES? SHR S %CPU %MEM??? TIME+? COMMAND?????????????????????????????????????????????????????????????
?4691 root????? 19?? 0? 448m 132m? 13m S? 0.0? 7.5?? 0:00.01 java????????????????????????????????????????????????????????????????
?4692 root????? 19?? 0? 448m 132m? 13m S? 0.0? 7.5?? 0:00.39 java????????????????????????????????????????????????????????????????
?4698 root????? 15?? 0? 448m 132m? 13m S? 0.0? 7.5?? 0:14.14 java????????????????????????????????????????????????????????????????
?4699 root????? 15?? 0? 448m 132m? 13m S? 0.0? 7.5?? 0:00.43 java????????????????????????????????????????????????????????????????
?4700 root????? 15?? 0? 448m 132m? 13m S? 0.0? 7.5?? 0:00.63 java????????????????????????????????????????????????????????????????
?4701 root????? 18?? 0? 448m 132m? 13m S? 0.0? 7.5?? 0:00.00 java???????????????????????????????????????????????????????????????
?对应的线程id是十进制的,需要转换为十六进制的在threaddump文件中才可以看到
3:十进制转十六进制
-bash-3.2# python
>>> print hex(4739)
0×1283
4:找到对应的线程
vi threaddump.log
查找:/0×1283
找到对应的线程,把相关的方法找出来,可以精确到代码的行号,自己修改相关源码来fix bug。