扫描二维码,报名慧测免费公开课

上篇文章的目标是让大家看懂基本的堆栈信息,同时也搞清楚了Java线程和本地线程的关系,上篇文章有同学问到,为啥要学习他们之间的关系呢?这就是原因之一——定位cpu消耗过高的Java线程,OK,开始今天的话题!
定位消耗CPU过高的线程
在linux终端输入top命令查看消耗cpu比较高的进程
如下图:找到PID=17339的进程,消耗了10.3%的CPU资源,排在第一位。

使用top -p 17339命令单独监控该进程

在这个界面上输入大写的H,列出当前进程下的所有线程
找到消耗cpu比较高的线程,获取到该线程编号是,17340

使用jstack 17339对当前Java进程做dump,获取Java线程堆栈信息,摘取部分信息如下:


将第4步获取的线程编号17340,转换成十六进制是:43bc
在第5步获取的堆栈信息里面查找nid=0x43bc的线程
根据上篇文章的堆栈读取思路定位代码瓶颈位置。
最后附上简单的案例源代码(课堂上的项目比这个复杂,这里主要是为了说明思路,大家方便理解)

本着学习交流之目的,如有错误或不当之处,欢迎批评指正,共同进步!
2017年8月16日起,慧测免费公开课系列正式开启——
连续两个月的Java语言+Selenium实战尽在慧测腾讯课堂!
软件测试工程师专属的Java语言学习盛宴!
紧密围绕性能测试、自动化测试、测试开发所必备的Java编程知识讲解!
为后续一个月免费的Selenium实战课程学习做准备!
本系列公开课报名地址:
https://ke.qq.com/course/229575#tuin=3e1d63a
或者扫描下方二维码直接报名

感谢您关注慧测:
慧测官网:www.huicewang.com
慧测公开课服务群: 623636110
课程咨询微信/QQ:18518511087/2657535456
公众号:慧测


