在我的代码中,创建一个对象非常昂贵,并且所需的内存非常大。我需要创建大约100次来测试我的产品。如果我这样写的话
for(int i =0; i < length; i++){
Object ob = new Object();
//do something with ob
Object2 ob2 = new Object2();
//do more with ob2
}
每次运行for循环时,这会创建一个新的ob,ob2吗?我需要在执行后在for循环结束时将它们设置为null,否则我的测试结果将出错。根据{{3}},它并不重要,所以我有点困惑。
我认为它应该在for循环结束时销毁它们。
答案 0 :(得分:3)
您无需将ob
和ob2
设置为空。
在for循环的每次迭代之后,在上面的代码中,您无法再访问上一次迭代中的ob
和ob2
个对象。这意味着它们将被垃圾收集最终。
但是,如果他们实现IDisposable
,您应该在每次迭代结束之前处置它们。
答案 1 :(得分:0)
是的,在ob
循环的范围内创建和销毁对象ob1
和for
;因此,在每次循环迭代时都会为这两个循环创建新对象。
如果你需要在循环结束循环中null
,但在下一循环迭代运行之前,则将它们设置为null:
ob = null;
ob1 = null;
然而,似乎没有必要(除了您的原始帖子说您需要这样做)。对象在每个循环迭代结束时被销毁,并且在循环完成后将不存在。