通常Linux的CPU主要用于中断、内核、用户进程的处理,优先级由高到低为中断>内核>用户进程
1.利用top或pidstat方式查看CPU消耗情况
1)分析us用户进程,找到十进制PID值,并转化为16进制的值,通过kill -3 [javapid]或jstack的方式dump出应用的java线程信息,通过之前转化的16进制值找到对应的nid值的线程,该线程即为消耗CPU的线程。【多次尝试】
ex.PID=26697转化为十六进制的值为0x6849
结合java thread dump(jstack pid | grep ‘nid=0x6849’)找到此线程.
除了jstack外可以借助商业工具vtune
2)sy系统进程
通过kill -3 [javapid]或jstack -l [javapid]导出java应用程序线程的信息,主要包括状态信息和锁信息