Heim >Java >javaLernprogramm >15.Java-Grundlagen – Heap & Stack
In Java gibt es sechs verschiedene Orte, an denen Daten gespeichert werden können.
ist der schnellste Speicherbereich, da er sich im Inneren des Prozessors befindet nicht kontrollieren kann.
ist ein Stack, der sich im Allzweck-RAM befindet. Es liegt nach Registern an zweiter Stelle in der Speichergeschwindigkeit. Nadel.
Es hat die folgenden Eigenschaften:
Speicher über den Stapelzeiger steuern. Wenn Sie nach unten gehen, wird neuer Speicher zugewiesen; wenn Sie nach oben gehen, wird dieser Speicher freigegeben. Beim Erstellen eines Programms muss der Java-Compiler also die genaue Größe und Lebensdauer aller auf dem Stapel gespeicherten Daten kennen, da er den entsprechenden Code generieren muss, um den Stapelzeiger nach oben und unten zu bewegen
Stapelspeicher gehört zu einem einzelnen Thread. Jeder Thread verfügt über einen Stapelspeicher, und die von ihm gespeicherten Variablen können nur in dem Thread sichtbar sein, zu dem er gehört. Das heißt, der Stapelspeicher kann als privater Speicher des Threads verstanden werden.
Datenaustausch im Stapel.
speichert Verweise auf Grundtypen variabler Daten, Objekte oder Arrays . Das Objekt selbst wird jedoch nicht auf dem Stapel gespeichert, sondern auf dem Heap (neu erstellte Objekte) oder im Konstantenpool (String-Konstantenobjekte werden im Konstantenpool gespeichert).
Verfügt über eine FILO-First-In-Last-Out-Regel.
ist ein Allzweck-Speicherpool (existiert auch im RAM). Wird zum Speichern aller Java-Objekte verwendet. Laienhaft ausgedrückt bedeutet dies, alle neuen Objekte zu speichern.
Der Unterschied zwischen dem Heap und dem Stack besteht darin, dass er eine große Flexibilität bei der Speicherzuweisung bietet, aber auch länger dauert. Denn:
Der Compiler muss nicht wissen, wie viel Speicherbereich er vom Heap zuweisen muss.
Der Compiler muss auch nicht wissen, wie lange die gespeicherten Daten im Heap verbleiben.
Wenn Sie ein Objekt erstellen müssen, müssen Sie nur eine einfache Codezeile schreiben. Wenn diese Codezeile ausgeführt wird, wird der Speicher automatisch im Heap zugewiesen.
wird zum Speichern geladener Klasseninformationen, Konstanten, statischer Variablen und vom Just-in-Time-Compiler kompilierter Code verwendet.
Der Konstantenpool ist Teil des Methodenbereichs.
Speichert String-Konstanten und grundlegende Typvariablen, wie z. B. String str="www". Tatsächlich befindet sich „www“ im Konstantenpool.
Die 8 Grundtypen von Java (Byte, Short, Integer, Long, Character, Boolean, Float, Double) implementieren alle anderen sechs Typen konstante Pools, aber sie sind nur in (-). 128 <= value<=127) verwendet den Konstantenpool. Außerhalb dieses Bereichs wird der Konstantenpool nicht verwendet und Objekte werden direkt im Heapspeicher erstellt.
In Java gibt es sechs verschiedene Orte, an denen Daten gespeichert werden können.
ist der schnellste Speicherbereich, da er sich im Inneren des Prozessors befindet nicht kontrollieren kann.
ist ein Stack, der sich im Allzweck-RAM befindet. Es liegt nach Registern an zweiter Stelle in der Speichergeschwindigkeit. Nadel.
Es hat die folgenden Eigenschaften:
Speicher über den Stapelzeiger steuern. Wenn Sie nach unten gehen, wird neuer Speicher zugewiesen; wenn Sie nach oben gehen, wird dieser Speicher freigegeben. Beim Erstellen eines Programms muss der Java-Compiler also die genaue Größe und Lebensdauer aller auf dem Stapel gespeicherten Daten kennen, da er den entsprechenden Code generieren muss, um den Stapelzeiger nach oben und unten zu bewegen
Stapelspeicher gehört zu einem einzelnen Thread. Jeder Thread verfügt über einen Stapelspeicher, und die von ihm gespeicherten Variablen können nur in dem Thread sichtbar sein, zu dem er gehört. Das heißt, der Stapelspeicher kann als privater Speicher des Threads verstanden werden.
Datenaustausch im Stapel.
speichert Verweise auf Grundtypen variabler Daten, Objekte oder Arrays . Das Objekt selbst wird jedoch nicht auf dem Stapel gespeichert, sondern auf dem Heap (neu erstellte Objekte) oder im Konstantenpool (String-Konstantenobjekte werden im Konstantenpool gespeichert).
Verfügt über eine FILO-First-In-Last-Out-Regel.
Der Konstantenpool ist Teil des Methodenbereichs.
Speichert String-Konstanten und grundlegende Typvariablen, wie zum Beispiel String str="www". Tatsächlich befindet sich „www“ im Konstantenpool.
Die 8 Grundtypen von Java (Byte, Short, Integer, Long, Character, Boolean, Float, Double) implementieren alle anderen sechs Typen konstante Pools, aber sie sind nur in (-). 128 <= value<=127) verwendet den Konstantenpool. Außerhalb dieses Bereichs wird der Konstantenpool nicht verwendet und Objekte werden direkt im Heap-Speicher erstellt.
Das Obige ist der Inhalt von 15.Java Basics – Heap & Stack. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).