这个问题在这里已经有了答案:
Catching java.lang.OutOfMemoryError?
(14 个回答)
7年前关闭。
try catch 在捕获内存不足异常方面有多好?我没有任何编写在低级别管理自己内存的软件的经验,但我可以想象一种方法来做到这一点。
我不知道 Java 实际处理内存异常的方式。管理内存的程序是否可能内存不足?我什么时候可以 try catch 内存不足异常而它无法捕获异常?
谢谢!
最佳答案
您不必担心作为捕获 throwable 的一部分而发生的任何隐式分配本身。总是有可能捕获它们。 JVM 甚至会在出现问题时保留 OOM 错误的预分配实例,以便它们自己永远不会分配失败。
但是,很可能还有次要的问题:
LogRecord
或 StringBuilder
,后者甚至可能作为语法字符串连接的一部分隐式发生),其中可能会再次耗尽内存。 但是,这些问题仅在您以“正常方式”耗尽内存时才适用;也就是说,通过分配大量“正常”对象。相比之下,如果内存不足的操作是,例如,单个分配,比如 10 GB 阵列,那么它们不会造成问题。
关于Java try catch - 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643225/