为什么可以在Java中记录OutOfMemory错误?

时间:2017-05-11 12:35:43

标签: java exception-handling heap

为了记录catch块中的任何内容,我们需要一个String对象的文本,但JVM已经用完了内存。我能想到的两个可能的原因是:

  1. OutOfMemory错误表示堆空间,String对象可以保存在String池中。
  2. OutOfMemory错误表示剩余的空间非常小,而堆已完全填满,并且可用于存储要记录的字符串的空间非常小。

1 个答案:

答案 0 :(得分:3)

非常广泛的问题,但一个简单的答案:在实施JVM时,您可能不想等到100%的内存耗尽。

意思是:你可能只是简单地拉开"紧急休息"当你达到99.99%的限制时。因为那时你知道你有那个"微小的"需要保留以允许(某种程度上)协调"紧急关闭"。

除此之外:这可能是"更少"关于给出异常的一些消息字符串...请记住,JVM还会收集堆栈跟踪信息;并将其附加到异常/错误。 (imho)更多昂贵,然后为一些消息字符串腾出空间!