Java定位代码导致的CPU过高问题
相信大家肯定遇到过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
,根据情况调整行数后,就可以看到该线程是执行的代码。