2015-04-06 124 views
1

我对GC引用的java引用有疑问。里面for循环如何处理对象引用。For循环对象引用,而GC

代码编号#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); 
} 

其编码REF为正确的GC。根据我的未决,两者都是正确的。 GC是否有区别?

回答

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 
} 
1

没有什么可以在任何情况下收集垃圾,所以不可能是任何GC相关的差异。