假设有一个大型Java应用程序,如果发生OutOfMemory
错误,我想正常关闭它。现在我看到以下问题:
一些组件捕获并“吞咽”所有Throwables
包括OutOfMemory
如果线程没有捕获OutOfMemory
,则它退出并且我们不知道发生了OutOfMemory
我可以以某种方式注册“ JVM级别”处理程序以捕获JVM中可能发生的任何OutOfMemory
吗?
最佳答案
一些组件捕获并“吞咽”所有Throwable,包括OutOfMemory
他们不应该那样做,我会解决它们。
如果一个线程没有捕获到OutOfMemory,它将退出并且我们不知道发生了OutOfMemory
我也会解决的。
您可以注册一个UncaughtExceptionHandler。
唯一的选择可能是在OOME上触发脚本以关闭程序。可以从命令行完成。