可能重复:
Catching java.lang.OutOfMemoryError捕获OutOfMemoryError是一个坏主意吗?
OutOfMemoryError是:当Java虚拟机无法分配一个对象,因为 它是内存不足,并没有更多的
时抛出内存可以通过 垃圾回收器
的Java说:
一个错误是Throwable的子类,表示严重的问题 合理的应用程序不应该试图捕获。大多数这样的 错误都是异常情况。
这感觉就像讯:
如果你是溺水,是合理的:你不应该试图游泳向上 保持你的头露出水面。死亡通常是由 异常情况造成的。
让我们想象一个运行服务的场景。出于某种原因,同一服务器上的另一个应用程序正在占用大量内存,导致服务中出现意外的OOM。试图减少这种服务的内存消耗以保持对用户可用,这是一个坏主意吗?
还是在JVM级别发生了一些更基础的事情,导致OOM抛出后无法实现此类解决方案?
@aix我可以通过将一些数据结构的引用设置为无效,即使我没有正确保存它们,但在戏剧性情况下仍然可以正常保存时,可以减少一些引用。 – JVerstry
@dogbane你的参考文献不回答我的问题,这个问题不是重复的。 – JVerstry
一个更好的比喻是:你开着一辆着火的汽车。不要试图继续并到达目的地。拉到坚硬的肩膀上。 – Jim