线程堆栈
2017-06-20 12:01 joe_tester 阅读(377) 评论(0) 收藏 举报什么是线程堆栈?
JAVA线程调用堆栈是虚拟机中线程(包括锁)状态的一个瞬间快照,即系统在某个时刻所有线程的运行状态,包括每一个线程的调用堆栈,锁的持有情况等信息。
每种JAVA虚拟机都提供了线程转储(thread dump)的后门,通过这个后门可以将那个时刻的线程堆栈打印出来,信息包含:
1、线程的名字,ID,线程的数量。
2、线程的运行状态,锁的状态(锁被哪个线程持有,哪个线程在等待锁)
3、调用堆栈(即函数的调用层次关系)。调用堆栈包含完整的类名,所执行的方法,源代码的行数。
线程堆栈善于分析:1)系统无缘无故CPU过高。2)系统挂起,无响应。3)系统运行越来越慢。4)性能瓶颈(如无法充分利用CPU)。
5)线程死锁,死循环,饿死等。6)由于线程数量太多导致系统失败(如无法创建线程等)
如何输出线程堆栈?
kill -3 <java pid> ( java进程id )
如何解读线程堆栈?
1)只关心java用户线程即可
2)线程堆栈里最直观的信息就是当前线程的上下文调用,即从哪个函数中调用到哪个函数中(从下往上看),正执行到哪个类的哪一行



浙公网安备 33010602011771号