Heim  >  Artikel  >  Java  >  Was ist das JVM-Speichermodell?

Was ist das JVM-Speichermodell?

青灯夜游
青灯夜游nach vorne
2019-11-23 16:25:113253Durchsuche

Dieser Artikel wird Ihnen ein erstes Verständnis des JVM-Speichermodells vermitteln. Er hat einen gewissen Referenzwert. Ich hoffe, er wird für alle hilfreich sein.

Was ist das JVM-Speichermodell?

Computerspeichermodell

Wenn das Programm ausgeführt wird, erhält die CPU Daten durch Zugriff auf den Hauptspeicher, jedoch mit der Geschwindigkeit Bei der Entwicklung der CPU wird die CPU-Zugriffsgeschwindigkeit immer höher und die Hardware kann die Bedingungen der CPU nicht erfüllen. Die meisten Speicher verfügen über einen entsprechenden mehrstufigen (normalerweise drei) Cache Daten folgen zunächst dem Cache der ersten Ebene. Der Zugriff erfolgt nacheinander auf den Cache der zweiten Ebene, den Cache der dritten Ebene und den Hauptspeicher, was die Zugriffsgeschwindigkeit verbessert, gleichzeitig aber die Daten im Cache verschiedener CPUs speichert kann unterschiedlich sein, was dazu führt, dass die CPU und der Hauptspeicher keine Datensynchronisation erreichen können

JAVA-Speichermodell

JAVA-Speichermodell (JMM) stimmt mit dem Computerspeicher überein Durch das Festlegen von Speicherbarrieren werden Zugriffsunterschiede zwischen verschiedenen Hardware- und Betriebssystemen abgeschirmt. Es handelt sich um einen Mechanismus und eine Spezifikation, die sicherstellen, dass Java-Programme auf verschiedenen Plattformen konsistent auf den Speicher zugreifen können.

Fünf Hauptspeicherbereiche

1. Programmzähler

Jeder Thread verfügt über einen Programmzähler, der zur Identifizierung verwendet wird Die Zeilennummer des Programmbytecodes des aktuellen Threads. Wenn die Java-Methode ausgeführt wird, speichert der Programmzähler die Zeilennummer der Bytecodedatei. Wenn die native Methode ausgeführt wird, ist der Inhalt des Programmzählers leer ihre eigenen exklusiven Programmzähler, privat für den Thread

2. JAVA Virtual Machine Stack

Jede Methode erstellt beim Ausführen einen Stapelrahmen, einschließlich der Speicherung lokaler Variablentabellen und Operationsstapel, dynamische Links, Methodenexporte und andere Informationen. Der Prozess jeder aufgerufenen Methode entspricht dem Prozess eines Stapelrahmens vom Schieben in den Stapel bis zum Herausspringen aus dem Stapel im Stapel der virtuellen Maschine.

Der JAVA Virtual Machine Stack wird hauptsächlich zum Speichern von Methodenparametern, lokalen Variablen innerhalb der Methode, während der Kompilierung geladenen Datentypen und Rückgabeadresstypen verwendet, die für den Thread privat sind

3. Lokal Der Methodenstapel

ähnelt dem JAVA-Virtual-Machine-Stack. Der Unterschied besteht darin, dass letzterer die von der virtuellen Maschine ausgeführten Java-Methoden (Bytecodes) bedient, während der lokale Methodenstapel die bedient Native Aufrufe, die von der virtuellen Maschine aufgerufen werden, sind im Allgemeinen in C oder C++ geschrieben

4. Der Heap ist der größte Teil Der von der virtuellen Maschine geladene Speicherbereich, der zum Speichern von Objektinstanzen verwendet wird, kann an diskontinuierlichen Speicheradressen gespeichert werden, solange die logischen Adressen kontinuierlich sind. Es wird in die neue Generation und die alte Generation unterteilt. Das Verhältnis der neuen Generation zur alten Generation beträgt 1:2 (kann über den Parameter –XX:NewRatio angegeben werden)

5 Bereich

Wird auch als permanente Generation bezeichnet und dient zum Speichern von Klasseninformationen, Konstanten und statischen Variablen, die von der virtuellen Maschine geladen werden. Es handelt sich um einen gemeinsam genutzten Bereich für Threads. Er wurde nach JDK8 aufgegeben Stattdessen wurde Metaspace verwendet

Empfohlenes Tutorial:

Java-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist das JVM-Speichermodell?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen