考虑以下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(使用前将#替换为@)