相信大家肯定遇到过java程序cpu一直居高不下的情况,那么我来简单介绍在linux系统下如何定位java进程cpu过高的代码位置。
- 首先,使用命令
top
,找到cpu过高的pid
;
- 接着,使用
top -Hp pid
找到对应的线程 tid
;
- 我们知道jstack可以查看当前java进程的堆栈状态;由于线程在堆栈信息的使用16进制的。那么,
printf "%x" tid
可以获取16进制的 tid16。
- 最后使用
jstack pid |grep -A 10 tid16
,根据情况调整行数后,就可以看到该线程是执行的代码。