【转】关于JVM CPU资源占用过高的问题排查
2016-03-11 11:07
344 查看
http://my.oschina.net/shipley/blog/520062
一、背景:
先执行一个java程序里面开了两个线程分别都在while循环做打印操作。?
二、现象:
通过top命令查看当前CPU情况可以看到有个java进程占用CPU过高,下面来排查是什么线程的什么代码导致CPU过高。
三、步骤
先获得PID为2023,上图可以看到,或者通过jps命令获取。 执行以下命令:?
结果:
可以看到两个CPU占用较高的线程,记下PID 2033和2034 ( 此处的PID即为线程ID标识) ,将其从十进制转成十六进制表示,可通过windows自带的计算器来转。得到结果分别为7f1和7f2
再通过jstack命令获取当前线程栈,可暂时保存到一个文件tempfile.txt中;
?
可以看到我们找到的线程Thread-0,以及该线程的状态和正在执行的代码行,本例中显示当前正在执行Worker类的15行。然后可去代码中查看不合理的逻辑
四、总结
该方法很有用,多次使用该方法定位出程序中的性能问题,在此分享和记录。相关文章推荐
- 冒泡排序
- 老生常谈——冒泡排序
- MySQL Innodb 插入调优
- ios查看手机磁盘剩余大小
- property 中的strong 与weak
- 【原创】linux mint 17.3 kvm 安装windows7虚拟机
- [JavaScript]String.format
- 关东升的《从零开始学Swift》3月9日已经上架
- 关于null == 0?返回false的问题
- STM32 USB学习笔记8
- C语言控制cpu使用率(《编程之美》)
- 性能测试指标:CPU Load和CPU利用率的关系
- MFC修改环境变量
- NodeJs之global,process
- 华为oj 字串的连接最长路径查找
- 使用 CAS 在 Tomcat 中实现单点登录
- android不用root删除系统apk
- Java compiler level does not match the version of the installed Java project fac
- Git 2 常用命令
- 杭电oj 2008 数值统计