Java定位代码导致的CPU过高问题

  相信大家肯定遇到过java程序cpu一直居高不下的情况,那么我来简单介绍在linux系统下如何定位java进程cpu过高的代码位置。

  1. 首先,使用命令top,找到cpu过高的pid
  2. 接着,使用top -Hp pid 找到对应的线程 tid
  3. 我们知道jstack可以查看当前java进程的堆栈状态;由于线程在堆栈信息的使用16进制的。那么,printf "%x" tid 可以获取16进制的 tid16。
  4. 最后使用 jstack pid |grep -A 10 tid16 ,根据情况调整行数后,就可以看到该线程是执行的代码。