Java HashMap.clear()和remove()内存有效吗?

2024-04-05

考虑以下HashMap.clear() code:

 /**
 * 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) of Entry物体永远不会缩小。所以,当我向地图添加 10000 个元素时,然后调用map.clear(),它将在其内部数组中保留 10000 个空值。所以,我的问题是,JVM 如何处理这个空数组,因此,就是HashMap记忆有效吗?


这个想法是clear()仅当您想重新使用时才调用HashMap。重用对象只能出于与之前使用对象相同的原因,因此很可能您将拥有大致相同数量的条目。避免无用的收缩和调整大小Map容量保持不变,当clear()叫做。

如果您只想丢弃中的数据Map,那么你不需要(事实上不应该)调用clear()就可以了,但只需清除所有对Map本身,在这种情况下,它最终将被垃圾收集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java HashMap.clear()和remove()内存有效吗? 的相关文章

随机推荐