看代码
while(...){
List list =new arraylist
list.add();
}
请问进入下一次循环的时候 上一次循环产生的list能够被gc回收吗
看代码
while(...){
List list =new arraylist
list.add();
}
请问进入下一次循环的时候 上一次循环产生的list能够被gc回收吗
上面的说的不对,回收不回收,jvm说了算,并不是立刻就回收
jvm启动参数上加上gc的日志-XX:+PrintGCDetails
[code="java"]
public class TestGc
public static void main(String[] args) {
int i=1000;
while(i-->0){
List l = new ArrayList();
for(int j=0;j++<1000;l.add(Integer.valueOf(i)));
System.out.println("loop "+i+" finish");
}
}
[/code]
结果可以看出来,并不是立即释放,而是由jvm自己去决定什么时候去释放
除非手动调用System.gc();
最好不要手动去释放