![]() |
1
4
您可以在JDK的bin目录中使用jconsole或jstack。jconsole特别允许您连接到进程并监视线程,包括它们锁定了哪些资源,它可以帮助您识别死锁状态。 |
![]() |
2
3
您还可以在eclipse的调试器中查看这一点。在“调试”视图中,使用“视图”工具栏上的小三角菜单打开“Java->显示监视器”。 如果怀疑出现死锁,请暂停应用程序(在“调试”视图中选择该应用程序,然后按“调试”视图工具栏上的“暂停”按钮),如果出现死锁,阻塞线程将变为红色。如果展开这些线程,可以看到锁争用。 |
![]() |
3
2
VisualVM(Java 1.6的一部分)( see ) |
![]() |
4
2
JDK有一些内置的支持——在unix下,kill-3进程,在windows下,ctrl-break。这将显示一个完整的线程转储,然后显示检测到的任何死锁。另外,在线程dusmp中,您可以看到哪些线程拥有哪些锁,并将它们相互比较。 |
![]() |
5
2
如果代码是您自己的,您可以创建/查找一个锁实现,该锁实现收集争用统计信息。如果没有,请尝试其他帖子中建议的工具。 |
![]() |
a a · 为什么在这个可重入锁示例中需要引用计数? 3 年前 |
![]() |
JohnLBevan · 为什么原子语句上需要锁提示? 7 年前 |
![]() |
Jay Wang · 生产者/消费者实施:陷入消费者循环 7 年前 |
![]() |
Andremoniy · 悲观写入是否锁定整个表? 7 年前 |
![]() |
Marcus Cemes · 选择。。。用于更新在提交后选择旧数据 7 年前 |
![]() |
Ins0maniac · Rails,锁定数据库中的记录 7 年前 |