当JVM对SIGQUIT没有响应时,如何找到更多信息?

时间:2013-07-23 17:34:46

标签: java jvm

我有一段Java代码有时会导致JVM“挂起”。发生这种情况时,我无法通过像jvisualvm这样的工具与它通信(该工具会说“连接超时”),并且当我发出{{1}时它也不会打印线程转储或终止}(SIGQUIT)。如果我发出SIGABRT(kill -3),该过程将终止。

因此,我无法获得线程转储,也无法找到其内存中的内容。如何在这种情况下获得更多信息?如果有帮助,操作系统为kill -6,我的JVM版本为
OSX

1 个答案:

答案 0 :(得分:1)

你不能,这就是它被称为“挂起”的原因。由于内部问题(例如无限循环,死锁......),JVM进程无响应,因此它不会响应。这可能是由于JVM实现中的错误。您可以尝试调试JVM以查明发生的情况。 HotSpot是GPL,所以你也可以获得源代码。

如果您怀疑代码中的某些内容导致此挂起(例如,JVM在执行特定操作时始终挂起),您可以粘贴它以便我们查看。