对于GC时的循环对象引用

时间:2015-04-06 22:31:27

标签: java memory-leaks garbage-collection

我怀疑GC上的java引用。 inside for循环如何处理对象引用。

代码参考#1

List myList = new ArrayList();
for(int i=1; i<100; i++) {
  MyObject a = new MyObject();
  myList.add(a); 
}

代码参考#2

List myList = new ArrayList();
MyObject a = null;
for(int i=1; i<100; i++) {
  a = new MyObject();
  myList.add(a); 
}

哪个代码引用对于GC是正确的。根据我的两个都是正确的。 GC有什么区别吗?

2 个答案:

答案 0 :(得分:1)

在任何一种情况下都没有垃圾收集,所以不可能有任何与GC相关的差异。

答案 1 :(得分:0)

由于a的生命周期在两个示例中完全相同,因此完全没有区别。

这样的事情会有所作为:

for(int i=1; i<100; i++) {
    a = new MyObject();
    // use a without referencing it
    a = null; // GC can collect
    // do other stuff not using a, which can be collected by GC if necessary
}