如果我运行以下代码会发生什么情况。
public class Test
public static void main( String[] args){
while(true)
new Object();
}
}
我的意思是,它会抛出OutOfMemoryError吗?还是不会因为垃圾收集器清除匿名对象而停止?
答案 0 :(得分:1)
新对象被创建,但是没有对其的引用,因此垃圾收集器将其最终确定,并再次释放其内存。所提供的示例等同于
y
在两种情况下,即使将对象分配给变量也不会改变主意,因为变量new Object();
new Object();
new Object();
...
new Object();
new Object();
循环重新启动时(在上面的列表中)被忽略(在上面的列表中)或被丢弃了。
因此,简而言之,所有这些都是浪费性能并吸引垃圾收集器。