查找Java程序中占用CPU线程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yuan1164345228/article/details/99100279

今天发现有个java应用占用CPU一直很高,将查看哪个线程导致CPU占用率高的方法总结如下:

  1. 查看进程PID
    使用top、ps等命令都可以,这里使用top:
    在这里插入图片描述
    可以看到PID=7679和PID=7745的进程占用CPU都很高。
  2. 通过top -Hp PID命令查看进程下线程CPU占用情况
    在这里插入图片描述
    可以通过输入P查看占用CPU最多的线程;输入M查看内存占用最高的线程。这里看到PID=7820和7818的线程占用CPU很高。
  3. 将线程PID转为十六进制
    Linux提供了很方便的工具,直接输入print “%x\n” 7818即可将7818转为十六进制输出。
  4. 打印进程堆栈
    jstack 进程id > ps.txt
  5. 打开堆栈文件,搜索第三步中十六进制的线程ID,可以看到这个线程的堆栈,从而定位到该线程。

猜你喜欢

转载自blog.csdn.net/yuan1164345228/article/details/99100279