我在自定义应用程序中使用 Java 服务包装器已经有一段时间了,它运行良好。由于最近几天将我们的应用程序更新到新版本,JVM 开始挂起,然后包装器在日志中打印:JVM 出现挂起:等待来自 JVM 的信号超时。
然后它会自动终止 JVM 并再次启动应用程序。这发生在运行大约 10 小时后,这使得调试变得更加困难。
当然,我将查看我们所做的更改,但没有进行我怀疑会导致此类问题的重大更改。
我在哪里可以尝试找出正在发生的事情?来自应用程序的调试消息并不表示任何有趣的事情。如果 JVM 只是崩溃,它通常会创建一个转储,这有助于调试它,但它会挂起,所以它不会创建一个转储。如果我让它不自动重新启动服务,在重新启动它之前我可以做些什么来从 JVM 中获取一些有用的信息?
在我看来,JVM 不应该因典型的编程错误而挂起。在此之前您遇到过什么会导致 JVM 挂起的情况?