使用jstack查看cpu过高的线程

造成cpu load过高的原因: Full gc次数的增大、代码中存在Bug(例如死循环、正则的不恰当使用等)都有可能造成cpu load 增高。

当运行java的虚机的cpu过高时,需要通过命令查看正在执行的进程在做什么,有以下两种方案:

  1. 查看所有线程
  • top:查看java进程号
  • jstack [java进程号]:查看所有线程堆栈,定位代码行。
  1. 查看占用cpu最高的线程
  • jps -v:查看java进程号
  • top -Hp [java进程号]:查看当前进程下最耗费CPU的线程
  • printf "%x\n" [步骤2中的线程号]:得到线程的16进制表示
  • jstack [java进程号] | grep -A100 [步骤3的结果]:查看线程堆栈,定位代码行。
posted @ 2022-03-11 15:08  可以书  阅读(420)  评论(0)    收藏  举报