【问题标题】:java.lang.OutOfMemoryError, when is memory reclaimed?java.lang.OutOfMemoryError,什么时候回收内存?
【发布时间】:2012-07-06 11:44:51
【问题描述】:

一旦抛出此异常,导致此异常的对象是否内存不足?它会立即发生吗?

换句话说,如果我将对象添加到列表中,在某些时候这将不再发生,并且会引发 OOM 错误。到时候,列表本身有什么变化吗?

java.lang.OutOfMemoryError: Java heap space

【问题讨论】:

  • 这是一个错误(不可恢复)。

标签: java out-of-memory


【解决方案1】:

当无法创建新对象时抛出此错误。当前对象将继续存在。

但是,由于此类错误的性质,当前代码将停止执​​行,并且可能很快就会对当前对象进行垃圾回收。这仅取决于您的代码结构以及是否仍保留对您的对象的引用。

【讨论】:

    【解决方案2】:

    来自documentation:

    当 Java 虚拟机因为内存不足而无法分配对象时抛出,并且垃圾收集器无法提供更多内存。

    【讨论】:

    【解决方案3】:

    根据http://docs.oracle.com/javase/6/docs/api/,OutOfMemoryError 是:

    当 Java 虚拟机无法分配对象时抛出,因为 内存不足,无法再提供内存 垃圾收集器。

    所以一旦 JVM 发现它没有足够的堆空间来为您尝试创建的新对象分配内存,就会发生这种情况。所以对象永远不会被创建,因为你没有足够的内存。

    【讨论】:

      猜你喜欢
      • 2012-08-24
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多