使用 Java (1.6) 是在 List 上调用 clear() 方法更好还是只是重新实例化引用更好?
我有一个 ArrayList,其中填充了未知数量的对象,并定期“刷新” - 处理对象并清除列表。一旦刷新,列表就会再次填满。刷新是随机发生的。列表中的数量可能很小(10 个对象)或很大(数百万个对象)。
那么,使用“flush”调用clear()还是new ArrayList()更好呢?
是否值得担心这类问题,或者我应该让虚拟机担心它?我怎样才能通过查看 Java 的内存占用来为自己解决这类问题呢?
非常感谢任何帮助。
主要需要关心的是other代码可能会引用该列表。如果现有列表在其他地方可见,您希望该代码看到已清除的列表,还是保留现有列表?
如果没有其他东西可以看到该列表,我可能会清除它 - 但不是出于性能原因;只是因为你描述操作的方式sounds更像是清理而不是“创建新列表”。
The ArrayList<T>
文档没有指定底层数据结构会发生什么,但是看看 Eclipse 中的 1.7 实现,看起来您应该调用trimToSize()
after clear()
- 否则你仍然可以拥有一个由大量空引用支持的列表。 (当然,也许这对您来说不是问题......也许这比随着大小再次增加而必须复制数组更有效。您会比我们更了解这一点。)
(当然,创建新列表不需要旧列表将所有数组元素设置为空......但我怀疑这在大多数情况下会很重要。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)