我有一个大的整数集,包含大约5.3M的整数,然后我把这个Set传递给方法-1来处理。之后我还有很多步骤要做,我的问题是这个大的整数集,它消耗了大量的内存。有什么办法可以在方法1之后释放那些内存,这样下面的方法可以在没有内存不足的情况下执行吗?
我尝试了以下内容:
myBigIntegerSet.clear()
和
myBigIntegerSet = null
我不知道这是否有助于内存使用,如果是,哪一个更好?谢谢!
答案 0 :(得分:0)
当无法再访问该对象时,只能对对象进行垃圾回收。所以在下面的例子中:
Set<Integer> myBigIntegerSet= new HashSet<Integer>();
Map<String, Set<Integer>> myMap = new HashMap<String, Set<Integer>>();
Mymap.put("test", myBigIntegerSet);
myBigIntegerSet= null;
myBigIntegerSet仍然不会被垃圾收集,因为myBigIntegerSet引用它。同样,clear使所有元素都为null。但是,如果它被其他对象使用,它仍然不能被垃圾收集。
myBigIntegerSet.clear();
取消引用myBigIntegerSet的所有对象应解决问题。我建议使用object的finalize方法来实现。