Maison > Java > javaDidacticiel > le corps du texte

Comment la méthode `hashCode()` se comporte-t-elle en Java lorsqu'elle n'est pas remplacée ?

Barbara Streisand
Libérer: 2024-11-03 00:36:02
original
880 Les gens l'ont consulté

How does the `hashCode()` method behave in Java when it's not overridden?

Comportement par défaut du code de hachage d'objet en Java

Si la méthode hashCode() n'est pas explicitement remplacée dans un objet Java, invoquer hashCode() sur cet objet donne un résultat spécifique basé sur l'implémentation de la machine virtuelle Java (JVM).

Comportement par défaut de la JVM HotSpot

Dans la JVM HotSpot, le comportement par défaut est la suivante :

  • Première invocation :Un nombre aléatoire est généré et stocké dans l'en-tête de l'objet.
  • Invocations ultérieures :Le le nombre aléatoire est extrait de l'en-tête de l'objet.

Par défaut, ce nombre aléatoire n'a aucune corrélation avec le contenu ou l'emplacement de l'objet.

Comportement personnalisable

Le comportement de la méthode hashCode() peut être personnalisé à l'aide de l'option -XX:hashCode=n HotSpot JVM. Cette option prend les valeurs suivantes :

  • 0 : Générateur aléatoire global (par défaut dans Java 7)
  • 5 : Générateur aléatoire xor-shift local (par défaut dans Java 8)
  • 1 : Pointeur d'objet mélangé avec une valeur aléatoire (stable entre les événements stop-the-world)
  • 2 : Toujours 1
  • 3 : Nombres auto-incrémentés
  • 4 : Pointeur d'objet réduit à 32 bits

Considérations spéciales

  • Même avec -XX:hashCode=4, le code de hachage peut ne pas toujours pointer à l'adresse de l'objet. Les objets peuvent être déplacés après la création, mais le code de hachage reste inchangé.
  • Les adresses des objets peuvent être mal distribuées, entraînant des tables de hachage déséquilibrées lors de l'utilisation de l'option -XX:hashCode=4.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal