ArrayList <E> .clear()的用处?

lfa*_*one 5 java memory-management arraylist

我正在查看Java文档,我遇到了ArrayLists的clear()方法.

有什么用,而不是简单地将新的ArrayList对象重新分配给变量?

cle*_*tus 14

因为可能存在对一个列表的多个引用,所以清除它可能比重新分配所有引用更可取和/或更实用.

如果你清空你的数组(在一个大循环内),那就没有必要创建大量的临时对象了.当然垃圾收集器最终会清理它们,但是如果不必要的话,没有必要浪费资源.

因为清除列表比创建新列表要少.

  • 实际上,有些情况下重用集合会导致内存问题.简而言之,如果一个大的ArrayList(或类似的)被长时间保留,它会被提升为终身代.然后,如果没有完整的一代(分析终身代并且可以看到元素真的是垃圾),那么它所包含的任何可能是年轻一代中的垃圾的元素都无法收集. (3认同)