在
Java中,有没有办法知道StackOverflow错误或OutOfMemory异常可能很快发生?
如果一个能够以编程方式获取内存使用情况统计信息,并且如果提前知道在抛出OutOfMemory异常之前需要使用多少内存,则OutOfMemory异常可能更容易捕获.但这些价值是否可知?
对于StackOverflow错误,有没有办法获得递归深度,以及如何知道递归深度的哪个值会导致错误发生?
通过提前知道这些错误是否会发生,我觉得我可以更优雅地恢复应用程序,而不是看着它崩溃.
解决方法
预计内存不足错误
我很惊讶我在其他帖子中没有看到这个,但你可以在Java 5/6中使用ManagementFactory来获取大量的内存使用信息.
有关检测Java中的低内存条件的更多信息,请查看platform mbean server page.我相信你可以设置通知程序,以便在内存使用率达到某个阈值时调用代码.