大数跨境

Java项目性能瓶颈分析及定位(四)——Java线程堆栈分析(一)

Java项目性能瓶颈分析及定位(四)——Java线程堆栈分析(一) 慧测
2017-08-09
1
导读:Java项目性能瓶颈分析及定位系列文章

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



    

线程堆栈在这里指的就是栈(stack),不是堆(heap)!!!


从今天开始,将为大家呈现详细的Java线程堆栈信息,积极向上,坚持学习,相信很多问题都可以迎刃而解,走起!


什么是线程堆栈?线程堆栈也称作线程调用堆栈。 Java线程堆栈是虚拟机中线程( 包括锁) 状态的一个瞬间快照(类似拍个照片) ,即系统在某个时刻所有线程的运行状态,包括每一个线程的调用堆栈, 锁的持有情况等信息。


每一种Java虚拟机(SUN JVM、 IBM JVM、 JRokit、 GNU JVM等等)都提供了线程转储(thread dump)的后门,通过这个后门可以将那个时刻的线程堆栈打印出来。记住:能够把线程堆栈的信息打印出来,不是因为某个工具多么强大,而是JVM留的有可以让你打印的后门,所以不管用什么工具、什么方式,打印的同一个堆栈信息基本是一样的


线程堆栈的基本信息如下:

  1. 线程的名字,ID,线程的数量等。

  2. 线程的运行状态,锁的状态( 锁被哪个线程持有, 哪个线程在等待锁等)。

  3. 调用堆栈( 即函数的调用层次关系)。 调用堆栈包含完整的类名, 所执行方法, 源代码的行数。


具体打印出的堆栈信息内容多少依赖于你的系统的复杂程度, 也许从几十行到上万行。 借助线程堆栈, 可以分析许多问题, 如线程死锁锁争用死循环识别耗时操作等等。 在多线程场合下的稳定性问题分析和性能问题分析, 线程堆栈分析是最有效的方法和手段, 可以说是杀手锏,在多数情况下甚至无需对系统了解就可以进行相应的分析。


之所以如此强调线程堆栈技术, 是因为该技术是分析可靠性、 稳定性、性能问题的最有力的技术, 以笔者的经验, 大约有50%以上的问题可以通过堆栈分析得以快速精确定位。 同时线程堆栈分析很多时候并不需要源代码, 这在很多场合, 具有无可比拟的优势。 笔者采用该技术, 曾经定位/解决了多个几乎不可能完成的任务。


接下来即将为大家呈现——

  • 如何输出线程堆栈?

  • 如何解读线程堆栈?

  • 如何借助线程堆栈进行问题分析?

  • 如何通过线程堆栈进行性能瓶颈分析?

  • 常见的性能瓶颈分析和定位工具?


本着学习交流之目的,如有错误或不当之处,欢迎批评指正,共同进步!




Java项目性能瓶颈分析及定位(一)——开篇


Java项目性能瓶颈分析及定位(二)——绕不开的Java基础知识


Java项目性能瓶颈分析及定位(三)——JVM及堆和栈

http://mp.weixin.qq.com/s/VpakNyIT1m4ZDWvl3AAGqw


(这个超链怎么都挂不上,大家需要的话就用浏览器打开看吧)




2017年8月16日起,慧测免费公开课系列正式开启——

连续两个月的Java语言+Selenium实战尽在慧测腾讯课堂!


  • 软件测试工程师专属的Java语言学习盛宴!

  • 紧密围绕性能测试、自动化测试、测试开发所必备的Java编程知识讲解!

  • 为后续一个月免费的Selenium实战课程学习做准备!


本系列公开课报名地址:

https://ke.qq.com/course/229575#tuin=3e1d63a


或者扫描下方二维码直接报名


感谢您关注慧测:

慧测官网:www.huicewang.com
慧测公开课服务群: 623636110

课程咨询微信/QQ:18518511087/2657535456

公众号:慧测


【声明】内容源于网络
0
0
慧测
专注人工智能前沿技术落地企业实战应用
内容 0
粉丝 0
慧测 专注人工智能前沿技术落地企业实战应用
总阅读0
粉丝0
内容0