家娃xiancheng-duizhan分析

来源:互联网 发布:淘宝怎么发布买家秀 编辑:程序博客网 时间:2024/06/06 03:42
线程堆栈也叫做 Thread dump 或者 trace stack。
线程堆栈也称作线程调用堆栈,java线程堆栈是虚拟机中线程(包括锁)状态的一个瞬间快照,即系统在某个
时刻所有线程的运行状态,包括每一个线程的调用堆栈,锁的持有情况等信息,每一种java虚拟机( SUN JVM .IBM JVM.
JRokit. GNU JVM )都提供了线程转储(thread dump)的后门,通过这个后门可以将那个时刻的线程堆栈打印出来,虽然
各种java虚拟机在线程堆栈的打印输出格式有一些不同,但是线程堆栈的信息都包括:
1 线程的名字,ID,线程的数量等等。
2 线程的运行状态,锁的状态(锁被那个对象持有,那个线程在等待锁等)
3 调用堆栈(即函数的调用层次关系)。调用堆栈包括完整的类名,所执行的方法,源代码的行数


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


但是。 线程堆栈是系统当时某个时刻的线程运行状况(即瞬时快照)对于已经消失而又没留有痕迹的信息,线程堆栈是无法进行历史追踪的
,这种情况下,只能结合日志进行分析,如连接池中的连接被那些线程使用了而没有释放这类问题尽管如此。总的来说线程堆栈是多线程类应用程序菲功能型问题定位的最有效手段,可以说是杀手锏
线程堆栈最善于分析如下类型的问题:
1 系统无缘无故的CPU过高。
2 系统挂起。无响应。
3 系统运行越来越慢。
4 性能瓶颈(如无法充分利用CPU等)
5 线程死锁。死循环。饿死等
6 由于线程数量太多导致系统失败(如无法创建线程等)

原创粉丝点击