2

我有一个执行繁重处理的 Java 服务器进程。它间歇性地停止处理,如日志停止,活动停止但进程仍处于活动状态。

我在调试几次时发生过这种情况。当它发生时,我在调试器中点击暂停/中断,以便我可以检查正在运行的线程并查找停止的原因。但是暂停按钮不会像往常那样闯入程序,只是坐在那里。我使用 IntelliJ IDEA,但我不确定是 IDE 还是 JVM 出现问题。

我尝试在问题发生之前闯入程序,它工作正常,进程停止,我可以检查线程列表。

有谁知道为什么 JVM 不会响应调试暂停/中断?它是如何进入这种情况的?我有点卡住了,因为我无法诊断这个问题,而不能在程序损坏时看到它的状态。导致问题的日志显示没有问题。

4

1 回答 1

1

可以连接 JVisualVM 吗?你的 CPU 是 100% 的吗?我们有一个平等的问题。应用程序已停止。JVisualVM 已不再连接。使用 jstack 的线程转储显示所有线程都已停止(多个线程转储之间没有差异),但 VM 消耗 100% CPU。我们更换了硬件,问题就解决了。我们认为这是一个 RAM 问题,垃圾收集在无限循环中运行。但这只是一个理论。

如果您能解决问题,请更新我。

于 2010-10-08T22:37:39.143 回答