如何提前了解OutOfMemory或StackOverflow错误

Dav*_*lle 8 java exception

在Java中,有没有办法知道StackOverflow错误或OutOfMemory异常可能很快发生?

OutOfMemory例外可能是一个更简单的一个捉,如果一个人能够获得的内存使用统计程序的,如果一个人知道提前多少内存需要之前使用OutOfMemory抛出异常.但这些价值是否可知?

对于StackOverflow错误,有没有办法获得递归深度,以及如何知道递归深度的值会导致错误发生?

通过提前知道这些错误是否会发生,我觉得我可以更优雅地恢复应用程序,而不是看着它崩溃.

Eli*_*jah 8

预计内存不足错误

我很惊讶我在其他帖子中没有看到这个,但你可以在Java 5/6中使用ManagementFactory来获取大量的内存使用信息.

查看平台mbean服务器页面,了解有关检测Java中的低内存条件的更多信息.我相信你可以设置通知器来在内存使用达到一定阈值时调用代码.


gus*_*afc 5

您可以使用Runtime.freeMemory()和预测内存不足的情况Runtime.maxMemory().大多数时候,优雅地恢复很难,但我把它留给你.