如何调试偶尔挂起的JVM

时间:2013-09-25 22:05:31

标签: java jvm hang

我有一台服务器,它会在退出时偶尔挂起。挂起仅发生在大约1/10或更少的时间,到目前为止我们无法找到可靠地重新创建问题的方法。我已经浏览了我的代码,并认为我正在关闭所有资源并杀死我的线程,但显然有些时候我没有关闭。

当我无法可靠地重新创建它时,是否有人可以建议调试技巧来帮我测试?我已经尝试过运行JVisualVM,但它没有多大帮助,然后向我显示sigterm线程仍在运行且一切都在0%CPU,我认为这意味着某处死锁。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用JConsole来监控您的服务器。您可以直观地监视内存,CPU使用情况和没有线程等。如果存在死锁,也可以检测死锁。

答案 1 :(得分:2)

当进程挂起时,您可以向进程发送SIGQUIT(kill -3),它​​将生成一个线程转储。输出转到stderr,因此请确保正在捕获。