Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen Stack und Heap in Java?

Was ist der Unterschied zwischen Stack und Heap in Java?

王林
王林Original
2019-11-13 11:35:423360Durchsuche

Was ist der Unterschied zwischen Stack und Heap in Java?

Java-Stack

Immer wenn ein Thread erstellt wird, erstellt die JVM einen entsprechenden Java Der Stapel enthält mehrere Stapel in diesem Java-Stack. Bei jeder Ausführung einer Methode wird ein Stapelrahmen erstellt, der einige „interne Variablen“ (in den darin definierten Methodenvariablen) enthält. Operationsstapel“ und „Methodenrückgabewert“ und andere Informationen.

Java-Heap

Der Heap ist der Ort, an dem Java-Objekte gespeichert werden. Er ist der Kernspeicherbereich für die Verwaltung von Java-Objekten. Der Heap ist das, was Java-Programmierer sein sollten am meisten beunruhigt, weil Es ist der Speicherbereich, der am engsten mit unserer Anwendung und unserem Speicher verbunden ist.

Jedes im Heap gespeicherte Java-Objekt ist eine Kopie der Objektklasse und kopiert alle nicht statischen Eigenschaften, die von seiner übergeordneten Klasse geerbt wurden.

Der Heap wird von allen Java-Threads gemeinsam genutzt, daher erfordert der Zugriff darauf Aufmerksamkeit auf Synchronisierungsprobleme und Methoden und entsprechende Attribute müssen Konsistenz gewährleisten.

Der Speicher kann in drei Bereiche unterteilt werden: Methodenbereich (auch statische Bereichsmethode genannt), Stapel und Heap

1. Methodenbereich

Speicher In diesem Bereich werden auch alle Klassen (d. h. Funktionen in Klassen) und statische Variablen gespeichert. Im Methodenbereich werden die einzigen Elemente im gesamten Programm gespeichert, z. B. Klassen und statische Variablen. Kann von allen Threads gemeinsam genutzt werden, genau wie der Heap.

2. Stapelspeicher:

speichert lokale Variablen, und sobald der Bereich, zu dem die Variable gehört, endet, wird die Variable automatisch freigegeben.

3. Heap-Speicher

speichert Entitäten, Arrays und Objekte (Arrays sind Objekte), und jede Entität hat einen ersten Adresswert. Alles, was neu herauskommt, befindet sich im Heap-Speicher und wird standardmäßig initialisiert. Es ist keine manuelle Freigabe oder automatische Speicherbereinigung erforderlich.

Empfohlenes Tutorial: Java-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Stack und Heap in Java?. 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
Vorheriger Artikel:Was macht Java?Nächster Artikel:Was macht Java?