2010-05-03 65 views
13

在Eclipse调试环境中是否有任何机制来查看持有同步锁的状态并等待进程?调试Java同步

+0

您正在调试可能的死锁吗? – aioobe 2010-05-03 09:34:45

+0

我发现了一个意外的死锁,但我不得不“猜测”,可能是从一组莫名其妙的停顿过程中发现的。有 应该是一个更好的方法。 – ddyer 2010-05-03 10:00:32

回答

13

您可以显示对象监视的状态Eclipse的调试器。你可以find a short, clear tutorial here。对于每个线程,Eclipse都可以显示线程拥有的监视器以及它正在等待的监视器。

+1

谢谢。我无法想象为什么监视器视图默认关闭。 – ddyer 2010-05-03 23:09:18

+0

它可能是,这只有在你正在寻找由同步语句引起的死锁时才有效。我目前正在寻找由'ReentrantReadWriteLock'引起的一个,并且我没有从eclipse中获得这种信息。 – Scheintod 2016-02-06 10:29:25

1

至于建议here你可以(如果你运行Sun JVM)执行以下步骤:

  1. 启动JConsole的或jvisualvm(均出现在你的JDK安装的bin目录,
  2. 重视你怀疑进程已经锁定了
  3. 转到线程窗格中,有一个“死锁检测”按钮