2015-04-06 118 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相關的差異。