目录
Linux分析Java进程中哪个线程占用了大量的CPU
当运行在服务器中的 Java 程序越来越慢,top
查看 CPU 的使用率非常高,确定是某个 Java 进程在占用过多的 CPU,此时定位是哪部分代码或者业务导致。
主要分为以下几个步骤实现:
1. 使用 top -H -p [pid]
命令列出进程的所有线程
通过上述命令,这里假定发现ID为”5171“的线程占用了 75% 的CPU
2. 使用计算器将十进制的线程ID”5171”转换成16进制
这里计算后的结果是 “0x1433”
3. 使用命令 jstack [pid] > jstack.txt
导出进程中所有线程上下文
4. 使用命令 cat jstack.txt | grep -i 1433
查找匹配的线程ID
从上述输出的信息可以直接得出执行的堆栈,从而确定哪部分代码出现了问题
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2018/05/analysis-thread-cpu/