我怀疑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有什么区别吗?
答案 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
}