Heim  >  Artikel  >  Java  >  Erweiterte JVM-Funktionen – Einführung in den Java-Speicherstrukturbereich

Erweiterte JVM-Funktionen – Einführung in den Java-Speicherstrukturbereich

巴扎黑
巴扎黑Original
2017-06-26 10:21:501721Durchsuche

Regionale Aufteilung:

Während der Ausführung des Programms unterteilt die Java Virtual Machine den Speicher in mehrere Bereiche mit unterschiedlichen Funktionen, wie unten gezeigt:

Dieses Bild listet die verschiedenen Bereiche der Speicheraufteilung auf, darunter

Thread-privat: Programmzähler, Stapel der virtuellen Maschine, lokal Methodenstapel

Thread-shared: Heap, Methodenbereich

Im Folgenden werden die Funktionen und Funktionen jedes Bereichs einzeln vorgestellt

Programmzähler:

1. Der Programmzähler wird hauptsächlich verwendet, um auf die ausgeführte Bytecode-Zeilennummer zu verweisen. Jeder Thread verfügt über einen separaten Programmzähler, der nicht mit jedem geteilt wird Andere. Durch Ändern dieses Zählers Zeigen Sie auf die Bytecode-Zeilennummer, um das Programm auszuführen

2. Schleifen, Sprünge, Ausnahmebehandlung und andere Mechanismen sind alle auf diesen Zähler angewiesen, um abgeschlossen zu werden

3. Wenn die Das Programm führt ein Java-Programm aus. Wenn die native Methode ausgeführt wird, ist ihr Wert leer

  Java Virtual Machine Stack:

1. Der Stapel der virtuellen Maschine ist für den Thread privat. Jede Methode erstellt bei der Ausführung einen Stapelrahmen, der zum Speichern von Informationen wie lokalen Variablentabellen, Methodenexits und dynamischen Links verwendet wird. und Operandenstapel. ,

2. Der Ausführungsprozess jeder Methode ist der Prozess eines Stapels einer virtuellen Maschine vom Einschieben bis zum Herausspringen

Viele Leute sagen oft, dass der Java-Speicher in Heap unterteilt ist Speicher und Stapelspeicher. Der Stapelspeicher bezieht sich auf den Stapel der virtuellen Maschine

. Die oben erwähnte lokale Variablentabelle speichert hauptsächlich die dem Compiler bekannten grundlegenden Datentypen (intbytecharlong usw.).

Erweiterung:

Objektreferenz: Nicht das Objekt selbst, es kann ein Referenzzeiger sein, der auf die Startadresse des Objekts zeigt, es kann ein Handle sein, das das Objekt oder andere verwandte Orte darstellt

returnaddress : ist kein Typ in der Java-API und kann von uns nicht aufgerufen werden. Es zeigt auf die Adresse einer Bytecode-Anweisung

 Lokal Methodenstapel

  Ähnlich wie beim Stapel der virtuellen Maschine ist es der Speicher, der native Methoden bedient

 Java-Heap

Heap-Speicher ist ein Thread-Shared-Speicher. Sein Hauptzweck ist die Speicherung von Objekten und er ist auch der Hauptbereich, der vom Garbage Collector verwaltet wird.

Der Java-Heap ist unterteilt in die neue Generation und die alte Generation, insbesondere über den Garbage-Collection-Mechanismus. Wird in nachfolgenden Artikeln vorgestellt

Methodenbereich (auch Nicht-Heap genannt)

Es ist auch ein gemeinsam genutzter Speicher, der zum Speichern geladener Klasseninformationen, Konstanten, statischer Variablen, vom Just-in-Time-Compiler kompiliertem Code usw. verwendet wird.

Laufzeitkonstante pool: Es ist Teil des Methodenbereichs und wird zum Speichern verschiedener vom Compiler generierter Literale und Symbole verwendet. Zitat

Direkter Speicher:

Es ist nicht Teil des Laufzeitdatenbereichs der virtuellen Maschine und gehört nicht zum von der JVM verwalteten Speicher.

  In NIO können Sie die native Funktion verwenden, um direkten Speicher direkt zuzuweisen Betreiben Sie es über das DirectByteBuffer-Objekt in Java als Referenz auf diesen Speicher

  Vorteile: Spart die Schritte des Speicherkopierens und ist effizienter. Schnell

Nachteile: schwer zu steuern, leicht zu verursachender Speicher Lecks

Das obige ist der detaillierte Inhalt vonErweiterte JVM-Funktionen – Einführung in den Java-Speicherstrukturbereich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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