首先查看使用cpu最高的进程,然后找到这个进程下使用cpu过高的线程,然后使用jstack命令,可以找到这个线程正在调用什么方法了,这个被调用的方法导致cpu使用率过高,就找到cpu高的原因了。
实际操作:
1、使用top命令,如下图所示:
备注:按住Shift + p 可按照cpu使用率排序
按住Shift + m 可按照内存利用率排序
一般情况下,cpu使用过高是由于应用程序造成的;使用top命令后,看一看到占用cpu高的进程ID是 1972
2、查看使用cpu使用率高的pid的线程 输入命令top –H –p 1972,如下如图所示:
备注:记录消耗cpu过高的线程id 1983
3、将线程 1983 转换为16进制 输入命令 printf "%x\n" 1983,如下图所示:
4、使用jstack命令;jstack 1972 | grep 7bf 其中1972为进程id,nid=0x7bf
到此就定位到了进程中消耗cpu过高的线程,再去看这个线程中调用什么方法,这个方法就是cpu消耗过高的原因。