2014年4月29日星期二

Java_011:如何找到导致CPU100%的代码?

基本思路如下:

1. 找到导致CPU100%的进程号
Linux下可以使用命令:top,然后按照CPU利用率排序。
Windows下可以使用Task Manager。

2. 打印该进程的线程信息
Linux下可以使用命令:top -Hp [pid],找到CPU利用率最高的线程号。
Windows下可以使用第三方工具:pslist,找到State=Running的线程号。
关于pslist,可以参考《WebLogic 常见故障之七:High CPU》。

3. 获取当前Java进程的thread dump
把第2步得到的线程号(10进制),转换成16进制。
然后在thead dump中搜索转换后的16进制字符串。
找到后,看StackTrace,锁定问题代码。

以此类推,应该也可以找到导致Memory和IO问题的代码。

参考文献:
1. http://blog.csdn.net/gobitan/article/details/5474062

没有评论: