解决思路:先查占用CPU高的进程号---->然后查询占用CPU高的线程号---->z最后查询是具体哪行代码出的问题。
一、 使用top命令找出CPU占比最高的进程。
从图中可以查出CPU占比最高的进程号是:2731
二、 使用 jps -l 或者 ps -ef | grep java | grep -v grep 命令,查出是哪个后台程序。
三、通过 ps -mp 进程号 -o THREAD,tid,time 命令,定位到具体线程或者代码。(参数解释:-m 显示所有线程,-p pid进程使用cpu的时间,-o 该参数后是用户自定义格式)
从图中可以看出占用CPU较高的线程号是:2732
四、通过 “printf “%x\n” 线程号” 命令,将上面查询出来的线程号转换为16进制格式(并把英文改成小写格式)
通过 printf “%x\n” 2732 查出的结果是 :aac
五、通过 " jstack 进程ID | grep tid(16进制线程ID小写英文) -A40 " 命令,查出具体是哪行代码出的问题。
通过 “jstack 2731ID | grep aac -A40” 命令 ,查出是第7行代码出的问题。