性能分析-死锁

什么是死锁


死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法进行下去。


排查死锁


1、在终端中输入jps查看当前运行的java程序


通过使用 jps 命令获取需要监控的进程的pid,我们找到了23780 DeathLockTest

2、使用 jstack -l pid 查看线程堆栈信息


mythread-tianluo 等待这个锁 “0x00000000d61ae3a0”,这个锁是由于mythread-jay线程持有。

mythread-jay线程等待这个锁“0x00000000d61ae3d0”,这个锁是由mythread-tianluo 线程持有。

3、分析堆栈信息


“mythread-tianluo"线程堆栈信息分析如下:

mythread-tianluo的线程处于等待(waiting)状态,持有“0x00000000d61ae3d0”锁,等待“0x00000000d61ae3a0”的锁

“mythread-jay"线程堆栈信息分析如下:

mythread-tianluo的线程处于等待(waiting)状态,持有“0x00000000d61ae3a0”锁,等待“0x00000000d61ae3d0”的锁

你可能感兴趣的:(性能分析-死锁)