清空一个集合(在我的例子中是一个ArrayList)与创建一个新集合(并让垃圾收集器清除旧的集合)的优缺点是什么?
具体来说,我有一个ArrayList<Rectangle>叫list。当发生某种情况时,我需要清空list并重新填充其他内容。我应该打电话list.clear()还是只做一个新的ArrayList<Rectangle>,让旧的被垃圾收集?每种方法的优缺点是什么?
ArrayList<Rectangle>
list
list.clear()
您可以保留容器并clear在想减少GC的负载时调用:clear()清空数组内的所有引用,但不使数组符合垃圾回收器的回收条件。这可能会加快将来的插入速度,因为内部数组ArrayList不需要增长。当您计划添加到容器中的数据与清除时的大小大致相同时,此方法特别有利。
clear
clear()
ArrayList
另外,clear当其他对象持有对您要清除的数组的引用时,您可能需要使用。
当新数据的大小可能与以前不同时,释放容器并创建一个新容器是有意义的。当然,通过clear()与结合使用,您可以达到类似的效果 trimToSize()。
trimToSize()