Heim  >  Artikel  >  Java  >  Java Virtual Machine Learning – Objektzugriff

Java Virtual Machine Learning – Objektzugriff

黄舟
黄舟Original
2017-03-18 17:51:441433Durchsuche

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.


Diese beiden Möglichkeiten des Zugriffs auf Objekte haben ihre eigenen Vorteile. Der größte Vorteil der Verwendung der Handle-Zugriffsmethode besteht darin, dass die Referenz eine stabile Handle-Adresse speichert Das Objekt wird verschoben. Es muss nur der Instanzdatenzeiger im Handle geändert werden, und die Referenz muss nicht geändert werden. Der größte Vorteil der Verwendung der Zeigerzugriffsmethode besteht darin, dass sie den Zeitaufwand für die Zeigerpositionierung einspart. Für die virtuelle Maschine wird die zweite Methode verwendet (direkter Zeigerzugriff).

Das Obige ist der Inhalt des Java Virtual Machine Learning – Objektzugriff. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Verwandte Artikel:

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

Stellungnahme:
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