更好地练习重新实例化List或调用clear()

Phi*_*hil 34 java list clear

使用Java(1.6)是否最好在List上调用clear()方法或者只是重新实例化引用?

我有一个ArrayList,其中填充了未知数量的对象并定期"刷新" - 处理对象并清除列表.刷新后,List再次填满.冲洗是在随机时间发生的.列表中的数字可能很小(对象的10个)或大的(数百万个对象).

那么"flush"调用clear()或new ArrayList()会更好吗?

是否值得担心这类问题,还是我应该让VM担心呢?我怎样才能看看Java的内存占用为我自己做这类事情?

任何帮助非常感谢.

Jon*_*eet 34

需要关注的主要问题是其他代码可能会引用该列表.如果现有列表在其他地方可见,您是否希望该代码查看已清除的列表,或保留现有列表?

如果没有别的东西可以看清单,我可能只是清楚它 - 但不是出于性能原因; 只是因为你描述操作的方式听起来更像清理而不是"创建新列表".

ArrayList<T>文档不指定会发生什么情况的基础数据结构,但是看着在Eclipse 1.7的实现,它看起来像你应该叫trimToSize()clear()-否则,你仍然可以有一个大阵空引用的支持列表.(也许这对你来说不是问题,当然......也许这比随着大小再次复制而复制数组更有效.你会比我们更了解这个.)

(当然,创建一个新列表不需要旧列表将所有数组元素设置为null ...但我怀疑在大多数情况下这将是重要的.)