2011-06-27 14 views
5

Específicamente cuando se utilizan con un recolector de basura en movimiento. La ubicación actual de la memoria del objeto no se puede usar porque puede cambiar en la próxima colección, entonces, ¿qué se usa como hash de los objetos?¿Cómo implementan JVM IdentityHashMap?

+2

la pregunta debería ser:? * ¿Cómo se implementan máquinas virtuales' System.identityHashCode() '*, ya que esto es lo que se utilizado por IdentityHashMap. –

+0

posible duplicado de [¿Cómo garantiza la JVM que System.identityHashCode() nunca cambiará?] (http://stackoverflow.com/questions/1063068/how-does-the-jvm-ensure-that -system-identityhashcode-will-never-change) –

Respuesta

0

Como Paulo señaló en su comentario, System.identityHashCode() se utiliza para esto. Y a partir de los javadocs:

devuelve el mismo código hash para el objeto dado como sería devuelto por el método hashCode() por defecto, si es o no la clase del objeto dado anula hashCode(). El código hash para la referencia nula es cero.

Así que, realmente, la cuestión se reduce a "¿Cuál es el algoritmo por defecto hashCode

Cuestiones relacionadas