67,550
社区成员




void f(){
List a=new ArrayList<int>();
a.add(1);
a.add(2);
a.add(3);
...
delete a;
}
class Example{
private static List obj = new ArrayList()
void dosmt(){
obj = new ArrayList();
obj.add(1);
//执行很多逻辑代码
...
//最后
obj = null;
}
这儿时候,由于obj是全局静态变量,doSmt执行完后,obj由于还再被引用,所以不能被回收,这个时候如何列表中存储大量数据,就可能造成内存溢出了
}
class Example{
private static List obj = new ArrayList()
void dosmt(){
List obj = new ArrayList();
obj.add(1);
//执行很多逻辑代码
...
//最后
obj = null;
}
这儿时候,由于obj是全局静态变量,doSmt执行完后,obj由于还再被引用,所以不能被回收,这个时候如何列表中存储大量数据,就可能造成内存溢出了
}
void dosmt(){
List obj = new ArrayList();
obj.add(1);
//执行很多逻辑代码
...
//最后
obj = null;
}
上面这是一种情况,但是由于这个obj,是局部变量,当代码执行完成后,obj就随时能被回收了
第二种情况
class Example{
private static List obj = new ArrayList()
void dosmt(){
List obj = new ArrayList();
obj.add(1);
//执行很多逻辑代码
...
//最后
obj = null;
}
这儿时候,由于obj是全局静态变量,doSmt执行完后,obj由于还再被引用,所以不能被回收,这个时候如何列表中存储大量数据,就可能造成内存溢出了
}