十八 死锁及定位

2018-11-26  本文已影响0人  BeYearn
  1. 死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进
  2. 定位死锁最常见的方式就是利用*** jstack*** 等工具获取线程栈,然后定位互相之间的依赖关系,进而找到死锁。如果是比较明显的死锁,往往 jstack 等就能直接定位,类似 JConsole 甚至可以在图形界面进行有限的死锁检测。
  1. 避免死锁的一些方法
  1. 有时并不是因为阻塞导致的死锁, 而是某个线程进入了死循环, 其它线程一直在等待, 诊断该情况: 当是死循环引起的其他线程阻塞,会导致cpu飙升, 可以通过linux下top命令查看cpu使用率较高的java进程,进而用top -Hp ➕pid查看该java进程下cpu使用率较高的线程。再用jstack命令查看线程具体调用情况,排查问题。
上一篇 下一篇

猜你喜欢

热点阅读