2015-02-11 25 views
0

当我的Java应用程序冻结时,我有一个罕见的问题。现在我可以在NetBeans中以调试模式重现它。所以它现在保持冻结状态,但我不知道如何在代码中找到死锁,以及在哪些线程中。 callstack窗口是空的,线程截图被附加。 我该怎么做才能在代码中找到问题?如何使用NetBeans查找死锁?

enter image description here

+1

您应该连续几次线程转储,然后您可以比较它们并查看线程正在等待的位置 - 存在您的死锁 – 2015-02-11 14:22:34

+0

以及如何创建这些线程转储? – Serg 2015-02-11 14:28:40

+1

http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstack.html或'kill -3 PID' on linux也是一个选项 – 2015-02-11 14:51:30

回答

2

为了定位僵局,你必须采取一些连续的线程转储。当你比较它们时,你会看到踏板在哪里等待 - 这是你的死锁。

您可以使用jstack(这应该是你的JDK安装的一部分)采取线程转储或者相反,如果你使用Linux,你可以使用kill -3 PID

0

在NetBeans中调用“调试 - >检查死锁”(菜单栏)