Was ist die Java-Objektspeicher-Speicherlayoutmethode?
Java-Objektspeicher-Speicherlayout
Wie wir alle wissen, ist Java eine objektorientierte Sprache. Was enthält ein Objekt also im Speicher? Erstens: Die meisten Objekte werden auf dem Heap gespeichert (außer Escapes ).
Dann werden die im Heap gespeicherten Objekte hauptsächlich in drei Teile unterteilt
Objektkopf, Objektinstanzdaten, Ausrichtungsergänzung (das Array hat eine weitere Array-Länge)
-
Objektkopf:
Markierungswort: Speichert den Hash-Code des Objekts, Sperrinformationen (Sperr-Upgrade) oder Generationsalter oder GC-Flag und andere Informationen.
Typzeiger: Speichert einen Zeiger auf die Klasse, zu der das Objekt gehört (Klassendatei in Metadaten ), JVM übergibt Dies bestimmt, zu welcher Klasse dieses Objekt gehört Alignment-Ergänzung Dieser Teil wird verwendet, um nicht genügend Platz für die Nummer zu füllen.
-
Java-Objektzugriffspositionierung
Zu den gängigen Zugriffsmethoden gehören hauptsächlich Handle - und
Direktzeiger
Handle:
Ein Speicherblock ist in den Java-Heap unterteilt Griff Pool, Stapel Die Handle-Adresse des in der Referenz gespeicherten Objekts, und das Handle enthält die spezifischen Adressinformationen der Objektinstanzdaten und Typdaten
- Direkter Zeiger
- :
Das Speicherlayout von Objekten im Java-Heap Sie müssen überlegen, wie Sie verhindern können, dass beim Zugriff auf verwandte Informationen vom Typ Daten direkt die Objektadresse als Referenz gespeichert wird.
Der direkte Zeigerzugriff auf das Objekt erfordert keinen zusätzlichen indirekten Zugriffsaufwand, und das Handle ist praktisch, wenn sich die Objektadresse ändert (die Garbage Collection verschiebt die Objektadresse), nur die Zeigerreferenz im Handle ist nicht erforderlich geändert werden. -
Erstellungsprozess von Java-Objekten
Wenn die virtuelle Maschine auf die neue Anweisung stößt, prüft sie zunächst, ob die angegebene Klasse geladen, überprüft und vorbereitet wurde ( - weist Speicherplatz für alle statischen Variablen in der Klasse zu , und es legt einen Anfangswert
) fest,
parst und initialisiert.
Nach der Klassenprüfung weist die virtuelle Maschine Speicher für das neue Objekt zu.
So stellen Sie die Sicherheit der Heap-Speicherzuweisung in gleichzeitigen Situationen sicher den Thread und erstellen Sie den Thread. Weisen Sie gleichzeitig Speicherplatz zu und überlassen Sie die Aufgabe, dem Thread Speicher zuzuweisen. Öffnen Sie TLAB (Thread Local Allocation Buffer)
- Legen Sie nach dem Zuweisen des Speichers den Objektheader fest, z. B. welche Klasseninstanz, Hashcode, Metadateninformationszeiger der Klasse (Methodenbereich)
Init-Methode zur Ausführung (Kernel-Methode). ), Mitgliedsvariablen initialisieren, den Instanziierungscodeblock ausführen, die Konstruktormethode der Klasse aufrufen und der Referenzvariablen die erste Adresse des Objekts im Heap zuweisen. Ist die Java-Objektzuweisung threadsicher?
CAS fügt Fehlerwiederholungen hinzu, um die Aktualisierungsintegrität sicherzustellen. -
Teilen Sie die Speicherzuweisung entsprechend den Threads in verschiedene Bereiche auf, dh jeder Thread weist vorab einen kleinen Speicherblock im Java-Heap zu, der als lokaler Thread-Zuweisungspuffer TLAB bezeichnet wird im entsprechenden TLAB zugewiesen, TLAB ⽤ Wenn Sie fertig sind, synchronisieren Sie erneut.
Instanziierungsreihenfolge der Java-Klasse
Die statischen Mitglieder und statischen Initialisierungsblöcke der übergeordneten Klasse werden in der Reihenfolge ausgeführt, in der sie im Code erscheinen.
Die statischen Mitglieder und statischen Initialisierungsblöcke der Unterklasse werden in ausgeführt in der Reihenfolge, in der sie im Code erscheinen. Führen Sie die
Instanzmitglieder und Instanzinitialisierungsblöcke der übergeordneten Klasse der Reihe nach aus und führen Sie die Konstruktormethoden der übergeordneten Klasse
die Instanzmitglieder und Instanzinitialisierungsblöcke der Unterklasse in der Reihenfolge aus, in der sie im Code erscheinen . Die
Unterklassenkonstruktionsmethoden
Das obige ist der detaillierte Inhalt vonWas ist die Java-Objektspeicher-Speicherlayoutmethode?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4
