1.top查找出哪个进程消耗的cpu高。执行top命令,默认是进程视图,其中PID是进程号(记下进程号)
2.top中shift+h 或“H”查找出哪个线程消耗的cpu高 (记下最高的几个线程号)
- jstack 进程号 >> pid-cpu.log
4、printf “%x\n” 线程号(得到线程16进制)
- jstack查找这个线程的信息
jstack [进程号]|grep -A 10 [线程的16进制]
我要看的信息是类似于这样的:
“http-8081-11” daemon prio=10 tid=0x00002aab049a1800 nid=0x52bb in Object.wait() [0x0000000042c75000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)