假设有一个大型Java应用程序,如果发生OutOfMemory错误,我想正常关闭它。现在我看到以下问题:


一些组件捕获并“吞咽”所有Throwables包括OutOfMemory
如果线程没有捕获OutOfMemory,则它退出并且我们不知道发生了OutOfMemory


我可以以某种方式注册“ JVM级别”处理程序以捕获JVM中可能发生的任何OutOfMemory吗?

最佳答案

一些组件捕获并“吞咽”所有Throwable,包括OutOfMemory


他们不应该那样做,我会解决它们。


  如果一个线程没有捕获到OutOfMemory,它将退出并且我们不知道发生了OutOfMemory


我也会解决的。

您可以注册一个UncaughtExceptionHandler。

唯一的选择可能是在OOME上触发脚本以关闭程序。可以从命令行完成。

09-10 09:37