JVM 在 OutOfMemoryError 之后是否自行终止 [重复]

2024-04-05

发生 OutOfMemoryError 后,JVM 会自行终止吗?如果不是那么为什么?它会尝试收回资源吗?还是有其他原因?


OutOfMemoryError 不会终止 JVM。

如果它未被捕获,它将终止引发错误的线程。其他线程保持正常运行,除非它们也导致 OutOfMemoryErrors。

只有在所有线程都终止或者所有剩余线程都是守护线程之后,JVM 才会终止。

它不会终止 JVM,因为它没有必要这样做。终止 JVM 是非常极端操作并不轻松。

它不会尝试取回任何资源,因为没有任何内容可取回。抛出OOME的原因就是:JVM无法获取资源,因为所有资源都被占用了。它已经做了它能做的一切。

必须记住,OOME 不一定是在消耗最多内存的线程中抛出的。一个线程可以消耗所有内存并将处理交给另一个尝试分配“仅一个字节”的线程。这当然会失败,并且尝试分配一个字节的线程会被 OOME 中断。这就是为什么从 OOME 中恢复几乎是不可能的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JVM 在 OutOfMemoryError 之后是否自行终止 [重复] 的相关文章

随机推荐