最近面试的时候面试官都有问到这个问题,所以这个问题还是属于高频面试题的。
1.查出消耗cpu最高的进程PID:执行top -c
命令,列出
进程运行信息表,再按下P,进程就会按照cpu使用率从高到低排序。记录下CPU使用率最高的PID。
2.根据第一步所得的PID查出消耗cpu最高的线程号,执行命令:top -Hp 进程号(PID);列出该进程下的
线程运行信息列表,再按下P,线程就会按照cpu使用率从高到低排序,记录下哪个线程的CPU使用率最高。
3.根据第二步骤得到的线程号查出对应的java线程,进行处理,先把这个线程号转为十六进制,执行命令:jstack -l 线程号> ./线程号.stack,然后执行,grep命令,查找该线程号的日志信息:cat 线程号.stack |grep 'bda' -C 8,这样问题一般都可以定位到了。