文档的java.lang.Error说:
Error是Throwable的子类,表示合理的应用程序不应该尝试捕获的严重问题
但是作为java.lang.Error子类java.lang.Throwable,我可以捕获这种类型的Throwable.
我明白为什么抓住这种例外不是一个好主意.据我所知,如果我们决定捕获它,catch处理程序不应该自己分配任何内存.否则OutOfMemoryError将再次抛出.
所以,我的问题是:
java.lang.OutOfMemoryError可能是一个好主意?java.lang.OutOfMemoryError,我们怎么能确定catch处理程序本身不分配任何内存(任何工具或最佳实践)?我正在开发一个需要大量内存的程序,我想在发生内存不足异常时捕获.我听说这是不可能做到的,但是如果在这方面有任何发展,我很好奇.
如果堆已满,JVM会抛出一个
OutOfMemoryError.但是它确保在抛出这样的异常之前总是发生(完全)垃圾收集吗?
这意味着当抛出异常时,内存只有强引用对象(或GC Roots可达)才能满.
编辑:假设Sun JVM - HotSpot正在讨论中.