JVM定位占用cpu过高堆栈信息(Linux)
2017-01-09 15:22
155 查看
第一步:使用top命令查看进程占用CPU的情况,获取PID
top
![](http://img.blog.csdn.net/20170109153218660?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2VrZXRydHI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
从图中可以看出cpu占用高达46.5%的进程ID是16243
第二步:使用top -H -p命令获取进程中线程信息(其中H:显示进程中线程的情况,p表示进程pid)
top -H -p 16243
![](http://img.blog.csdn.net/20170109153241015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2VrZXRydHI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上图中最高的线程pid=17466
第三步:获取最高的线程pid(十进制,装换成十六进制),十进制转十六进制可以手动计算也可以用python
-c "print hex(线程PID)"
![](http://img.blog.csdn.net/20170109153258020?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2VrZXRydHI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
第四步:查看线程堆栈信息,jstack
pid(进程pid) | grep 线程pid
![](http://img.blog.csdn.net/20170109153315458?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2VrZXRydHI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
grep有三个比较好用的参数,-A 10显示关键字之后10行 -B 10 显示关键字之前10行 -C 10
显示关键字前后10行
从上图中可以看到doFreshRoomChatInfoFromRedis方法消耗了大量CPU时间。到了这里,剩下的就是分析代码了。
top
从图中可以看出cpu占用高达46.5%的进程ID是16243
第二步:使用top -H -p命令获取进程中线程信息(其中H:显示进程中线程的情况,p表示进程pid)
top -H -p 16243
上图中最高的线程pid=17466
第三步:获取最高的线程pid(十进制,装换成十六进制),十进制转十六进制可以手动计算也可以用python
-c "print hex(线程PID)"
第四步:查看线程堆栈信息,jstack
pid(进程pid) | grep 线程pid
grep有三个比较好用的参数,-A 10显示关键字之后10行 -B 10 显示关键字之前10行 -C 10
显示关键字前后10行
从上图中可以看到doFreshRoomChatInfoFromRedis方法消耗了大量CPU时间。到了这里,剩下的就是分析代码了。
相关文章推荐
- JVM定位占用cpu过高堆栈信息(Linux)
- Linux中如何精准定位JVM线程CPU过高
- 查看Linux进程CPU过高具体的线程堆栈(不中断程序)
- Linux下Chrome字体设置和启用OpenGL、GPU显卡加速解决Flash CPU占用过高的问题
- 查看Linux进程CPU过高具体的线程堆栈(不中断程序)
- 查看进程占用内存cpu信息,Linux命令—TOP
- 工具运行过程中,CPU占用过高的分析定位
- 如何定位占用oracle数据库cpu过高的sql
- (一)JAVA CPU占用过高问题排查(linux)
- linux(unix)下java应用占用cpu过高查找方法
- 关于使用WindowsUpdate 或 Windows 自动升级时碰到的 svchost.exe 进程 CPU 资源占用过高的问题的相关信息
- linux 分析进程占用CPU过高
- linux下Bochs模拟占用CPU过高问题解决
- 分析定位占用CPU资源高的JVM线程
- 查看Linux进程CPU过高具体的线程堆栈(不中断程序)
- 定位cpu占用过高的线程和对应的方法
- linux下查出cpu占用过高线程
- java问题导致linux负载、cpu过高如何定位
- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta (Linux 如何查看进程的各线程的CPU占用 )
- Linux C++中获取指定pid、tid的CPU与内存占用信息