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;

}

似乎对象的内部数组(tableEntry从未缩小。因此,当我向地图添加10000个元素,并且在调用之后map.clear(),它将在其内部数组中保留10000个null。因此,我的问题是,JVM如何处理没有任何内容的数组,因此HashMap内存有效吗?

回答:

这个想法是clear()仅在您想重新使用时才调用HashMap。重复使用对象的原因仅应与以前使用过的原因相同,因此,您的条目数将大致相同。为避免无用的收缩和Map容量调整,在clear()调用时应保持不变。

如果您要做的只是丢弃中的数据Map,则无需(实际上也不应)调用clear()它,而只需清除对Map自身的所有引用,在这种情况下,最终将对其进行垃圾收集。

以上是 Java HashMap.clear()和remove()内存有效吗? 的全部内容, 来源链接: utcz.com/qa/423537.html

回到顶部