Der Objektzugriff umfasst drei Speicherbereiche: Java-Stack, Java-Heap und Methodenbereich.
Zum Beispiel der folgende Code:
Object objectRef = new Object();
Unter der Annahme, dass dieser Code im Methodenkörper erscheint, wird der Teil „Object objectRef“ in den lokalen Variablen des Java-Stacks als Referenz widergespiegelt Typdaten werden angezeigt. Der Teil „new Object()“ spiegelt sich im Java-Heap wider und bildet einen strukturierten Speicher, der alle Instanzdatenwerte des Objekttyps speichert. Die Länge dieses Speichers hängt vom spezifischen Typ und dem von ihm implementierten Objektspeicherlayout ab Die virtuelle Maschine ist nicht behoben. Darüber hinaus muss der Java-Heap auch Adressinformationen enthalten, mit denen diese Objekttypdaten gefunden werden können (z. B. Objekttyp, übergeordnete Klasse, implementierte Schnittstelle, Methode usw.). Diese Datentypen werden im Methodenbereich gespeichert.
Der Referenztyp in der Java Virtual Machine-Spezifikation legt nur eine Referenzadresse fest, die auf das Objekt verweist. Er definiert nicht die Art und Weise, wie diese Referenz lokalisiert werden soll, um auf den Objektspeicherort im Java-Heap zuzugreifen. verschiedene virtuelle Die von der Maschine implementierten Zugriffsmethoden können unterschiedlich sein. Es gibt zwei gängige Methoden: die Verwendung von Handles und direkten Zeigern.
Die Zugriffsmethode des Handles : Der Java-Stapel wird in einen Teil des Speichers unterteilt, in dem die Handle-Adresse des Objekts als Referenz und das Handle gespeichert wird enthält die Objektinstanzdaten und Typdaten bzw. spezifische Adressinformationen.
Zeigerzugriffsmethode : Die Referenzvariable speichert direkt die Adresse des Objekts, und ein Teil des Java-Heap-Objekts speichert die Objektinstanzdaten und Der andere Teil speichert Objekttypdaten.
Detaillierte Erklärung der Java Virtual Machine
Detailliertes Verständnis der Java Virtual Machine
Java Virtual Machine Learning – Klassenlademechanismus
Java Virtual Machine Learning – Objektspeicherzuweisung und -recycling