清空ArrayList还是只创建一个新列表,然后让旧列表被垃圾回收?

清空一个集合(在我的例子中是一个ArrayList)与创建一个新集合(并让垃圾收集器清除旧的集合)的优缺点是什么?

具体来说,我有一个ArrayList<Rectangle>list。当发生某种情况时,我需要清空list并重新填充其他内容。我应该打电话list.clear()还是只做一个新的ArrayList<Rectangle>,让旧的被垃圾收集?每种方法的优缺点是什么?

回答:

您可以保留容器并clear在想减少GC的负载时调用:clear()清空数组内的所有引用,但不使数组符合垃圾回收器的回收条件。这可能会加快将来的插入速度,因为内部数组ArrayList不需要增长。当您计划添加到容器中的数据与清除时的大小大致相同时,此方法特别有利。

另外,clear当其他对象持有对您要清除的数组的引用时,您可能需要使用。

当新数据的大小可能与以前不同时,释放容器并创建一个新容器是有意义的。当然,通过clear()与结合使用,您可以达到类似的效果

trimToSize()

以上是 清空ArrayList还是只创建一个新列表,然后让旧列表被垃圾回收? 的全部内容, 来源链接: utcz.com/qa/412668.html

回到顶部