Sé que las claves weakKeys() significan que las claves están envueltas por WeakReference y GC puede recopilar las claves automáticamente, lo mismo con weakValues() (por valor).
Según tengo entendido: una vez que GC recopiló una entrada ( ya sea clave o valor ), la entrada caduca.
Mi pregunta:
weakKeys() y weakValues() ? (uno de ellos fue recogido, la entrada está caducada)
Are weakKeys()yweakValues()? (uno de ellos fue recogido, la entrada está caducada)
No, si se recopila una clave o un valor, la Entry en sí no caducará. Aún tendrá acceso a Entry , pero la "referencia" a la clave y el valor lo señalará como null .
Guava doc dijo: "cuando se usa este método, el caché resultante usará la comparación de identidad (==) para determinar la igualdad de valores". ¿Cuándo el caché compara el valor? ¿para qué?
En Java, las variables de Object son básicamente punteros, lo que significa que almacenan una dirección 8-bit en el bloque de memoria que contiene el objeto. Entonces, la documentación dice que no comparará objetos (porque son null ), sino referencias a objetos.