首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

转:java怎么定位cpu占用较高

2012-12-28 
转:java如何定位cpu占用较高流程:把线程dump出来,然后分析1:Threaddump的方法:kill -3 pid jstack -l pid

转:java如何定位cpu占用较高

流程:把线程dump出来,然后分析

1:Threaddump的方法:

kill -3 pid
jstack -l pid
jvisualvm中来thread dump
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。

热点排行