无限匿名对象创建

时间:2018-12-15 11:20:33

标签: java

如果我运行以下代码会发生什么情况。

public class Test
  public static void main( String[] args){
    while(true)
        new Object();
    }
  }

我的意思是,它会抛出OutOfMemoryError吗?还是不会因为垃圾收集器清除匿名对象而停止?

1 个答案:

答案 0 :(得分:1)

新对象被创建,但是没有对其的引用,因此垃圾收集器将其最终确定,并再次释放其内存。所提供的示例等同于

y

在两种情况下,即使将对象分配给变量也不会改变主意,因为变量new Object(); new Object(); new Object(); ... new Object(); new Object(); 循环重新启动时(在上面的列表中)被忽略(在上面的列表中)或被丢弃了。

因此,简而言之,所有这些都是浪费性能并吸引垃圾收集器。