Heim > Java > javaLernprogramm > Hauptteil

Wie generiert Java Hash-Codes, wenn „hashCode()' nicht überschrieben wird?

Mary-Kate Olsen
Freigeben: 2024-10-31 21:17:02
Original
438 Leute haben es durchsucht

How Does Java Generate Hash Codes When `hashCode()` is Not Overridden?

Standard-Hash-Code-Verhalten in Java

Wenn die hashCode()-Methode nicht überschrieben wird, führt der Aufruf für ein Objekt in Java zu einem System -generierter Hash-Code.

Zugrundeliegender Mechanismus

In HotSpot JVM wird der HashCode normalerweise durch eine der folgenden Methoden bestimmt:

  • Zufallszahl (Standard in Java 7): Eine Zufallszahl wird generiert und im Objektheader gespeichert. Dieser Standardansatz birgt die Möglichkeit von Race Conditions oder Verzögerungen in Umgebungen mit hoher Parallelität.
  • Thread-lokaler Zufallsgenerator (Standard in Java 8): Ein thread-lokaler Zufallsgenerator wird verwendet Vermeiden Sie Race Conditions und verbessern Sie die Leistung.
  • Objektzeiger: Der Objektzeiger wird mit einem Zufallswert gemischt, um den Hash-Code zu generieren. Diese Methode kann jedoch zu einer schlechten Verteilung der Hash-Tabelle führen.

Kontrollierbares Verhalten

Das Verhalten der Hash-Code-Generierung kann mit -XX geändert werden: hashCode=n HotSpot-JVM-Option. Folgende Werte sind verfügbar:

  • 0 (Standard in Java 7): Globaler Zufallsgenerator
  • 5 (Standard in Java 8): Thread-lokaler XOR-Shift-Zufallsgenerator
  • 1: Objektzeiger gemischt mit Zufallswert
  • 2: Immer 1
  • 3: Zahlen automatisch inkrementieren
  • 4: Objektzeiger auf 32 Bit gekürzt

Es ist wichtig zu beachten, dass selbst bei Verwendung der Option -XX:hashCode=4 der Hash-Code aufgrund möglicher Objektbewegungen möglicherweise nicht immer der Objektadresse entspricht.

Das obige ist der detaillierte Inhalt vonWie generiert Java Hash-Codes, wenn „hashCode()' nicht überschrieben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!