java程序占用CPU过高问题排查

  1. 查看进程占多少CPU
    #top -p 25484
  2. 查看进程里各个线程占多少CPU
    #top -p 25484 -H
  3. 查看线程的执行栈信息
    先把线程号转换为16进制。
    #printf '%0x\n' 28616
    6fc8
    再通过jstack命令看看这个线程在干嘛
    $jstack 25484 | grep -A 10 6fc8
    连续执行上述jstack命令多次,不出意料你会发现代码总是停留在某一行或某一个循环块内,如果是停留在某一行说明该行代码执行起来非常耗CPU,如果是停留在某一个循环块内说明这是个死循环。
posted @ 2016-10-22 17:50  张朝阳  阅读(836)  评论(0编辑  收藏  举报