Java HashMap.clear()和remove()内存有效吗?
考虑以下HashMap.clear()
代码:
/** * Removes all of the mappings from this map.
* The map will be empty after this call returns.
*/
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}
似乎对象的内部数组(table
)Entry
从未缩小。因此,当我向地图添加10000个元素,并且在调用之后map.clear()
,它将在其内部数组中保留10000个null。因此,我的问题是,JVM如何处理没有任何内容的数组,因此HashMap
内存有效吗?
回答:
这个想法是clear()
仅在您想重新使用时才调用HashMap
。重复使用对象的原因仅应与以前使用过的原因相同,因此,您的条目数将大致相同。为避免无用的收缩和Map
容量调整,在clear()
调用时应保持不变。
如果您要做的只是丢弃中的数据Map
,则无需(实际上也不应)调用clear()
它,而只需清除对Map
自身的所有引用,在这种情况下,最终将对其进行垃圾收集。
以上是 Java HashMap.clear()和remove()内存有效吗? 的全部内容, 来源链接: utcz.com/qa/423537.html