java.lang.OutOfMemoryError,什么时候回收内存?

时间:2012-07-06 02:19:55

标签: java out-of-memory

抛出此异常后,是否会导致内存丢失?它会马上发生吗?

换句话说,如果我将对象添加到列表中,那么在某些时候这种情况就不再发生了,并且抛出了OOM错误。那时候,列表本身有什么事吗?

java.lang.OutOfMemoryError: Java heap space

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

来自documentation

  

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

答案 2 :(得分:0)

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

  

当Java虚拟机无法分配对象时抛出,因为   内存不足,没有更多的内存可供使用   垃圾收集器。

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