清理大型Java集/列表以方便内存使用

时间:2014-04-11 19:35:13

标签: java set

我有一个大的整数集,包含大约5.3M的整数,然后我把这个Set传递给方法-1来处理。之后我还有很多步骤要做,我的问题是这个大的整数集,它消耗了大量的内存。有什么办法可以在方法1之后释放那些内存,这样下面的方法可以在没有内存不足的情况下执行吗?

我尝试了以下内容:

myBigIntegerSet.clear()

myBigIntegerSet = null

我不知道这是否有助于内存使用,如果是,哪一个更好?谢谢!

1 个答案:

答案 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方法来实现。