码迷,mamicode.com
首页 > 编程语言 > 详细

如何快速定位JVM中消耗CPU最多的线程?

时间:2018-05-17 18:19:16      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:关键字   code   线程   jvm   进制   class   十六进制   如何快速   int   

第一步、先找出Java的进程PID

ps -ef | grep 进程名关键字
这里假设找到的PID是:12345
 

第二步、找出该进程内最消耗CPU的线程

top -Hp 12345

17183 log4x     20   0 4292820 529812  23040 R 94.7  0.8   1:11.79 java -server -Xms268435456 -Xmx268435456 
17162 log4x     20   0 4292820 529812  23040 R 87.1  0.8   1:17.90 java -server -Xms268435456 -Xmx268435456 
17172 log4x     20   0 4292820 529812  23040 R 86.1  0.8   1:16.26 java -server -Xms268435456 -Xmx268435456 
17176 log4x     20   0 4292820 529812  23040 R 68.0  0.8   1:12.31 java -server -Xms268435456 -Xmx268435456 
17170 log4x     20   0 4292820 529812  23040 S  7.3  0.8   0:44.70 java -server -Xms268435456 -Xmx268435456 

 

第三步、将线程编号转换成十六进制

[root@test185 ~]# printf "%x\n" 17183
431f

 

第四步、用jstack PID打印出进程内所有的线程堆栈

jstack 12345 > 12345.txt

 

第五步、根据线程的十六进制编码,在堆栈文件中定位具体的线程堆栈。

nid=0x431f

 

如何快速定位JVM中消耗CPU最多的线程?

标签:关键字   code   线程   jvm   进制   class   十六进制   如何快速   int   

原文地址:https://www.cnblogs.com/steven-note/p/9052222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!