如:
Map a =new HashMap();
Map a1=new HashMap();
a1.put(...);Map a2=new HashMap();
a2.put(...);a.put("a1",a1);
a.put("a2",a2);现在令a.clear();a=null;
理论上将a1,a2都应该可以被GC回收吧?
但是我的程序跑了长时间后就OUTOFMEMORY,总不见空间被释放. 实际上我的所有Map都是在一个方法内的局部变量,我认为就算我不clear应该都没问题,怎么感觉就是释放不调呢?有没XD遇到过一样的情况?
Map a =new HashMap();
Map a1=new HashMap();
a1.put(...);Map a2=new HashMap();
a2.put(...);a.put("a1",a1);
a.put("a2",a2);现在令a.clear();a=null;
理论上将a1,a2都应该可以被GC回收吧?
但是我的程序跑了长时间后就OUTOFMEMORY,总不见空间被释放. 实际上我的所有Map都是在一个方法内的局部变量,我认为就算我不clear应该都没问题,怎么感觉就是释放不调呢?有没XD遇到过一样的情况?
只是内容清空,不是内存清空.
内存的释放不是你决定的,是垃圾回收线程后台执行的
你试试显示调用垃圾回收看看,释放你的HashMap