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

