Considere el código HashMap.clear()
siguientes aparatos:¿Está vigente la memoria Java HashMap.clear() y remove()?
/**
* 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;
}
Parece, que la matriz interna (table
) de Entry
objetos no se achica. Entonces, cuando agregue 10000 elementos a un mapa, y luego de eso llame al map.clear()
, mantendrá 10000 nulos en su matriz interna. Entonces, mi pregunta es, ¿cómo maneja JVM esta matriz de nada, y por lo tanto, es efectiva la memoria HashMap
?
10.000 nulos ocupan todos los 40 KB (posiblemente 80 en una JVM de 64 bits). –
@Michael, tal vez, pero eso es irrelevante: el número se puede ampliar a cualquier escala. OP está preguntando por una cuestión de principios. Tal vez el mapa es enorme, tal vez la memoria disponible es pequeña. No lo sabemos – corsiKa
10000 elementos en el mapa! = 10000 entradas en la tabla interna. aprenda cómo funciona la herramienta HashMap primero ... – james