Heim  >  Artikel  >  Java  >  So erkennen Sie den Unterschied zwischen Heap und Stack in Java-Anwendungen

So erkennen Sie den Unterschied zwischen Heap und Stack in Java-Anwendungen

无忌哥哥
无忌哥哥Original
2018-07-19 09:42:592320Durchsuche

1. Der Speicher der Referenzvariablen grundlegender Datentypen und Objekte in Java wird auf dem Stapel zugewiesen, und die Variablen werden automatisch freigegeben, wenn sie den Gültigkeitsbereich verlassen Der Konstantenpool (String-Konstantenpool, Basistyp-Konstantenpool), dh die erstellten Objekte werden auf dem Heap gespeichert.

2. Die Verwaltung des Stapelspeichers wird durch Schieben und Öffnen des Stapels abgeschlossen. Die Grundeinheit des Stapels ist der Stapelrahmen, durch den ein neuer Stapelrahmen erstellt wird Nachdem der Aufruf abgeschlossen ist, wird der Stapelrahmen durch Öffnen des Stapels freigegeben. Der Heap wird zum Speichern von während der Laufzeit erstellten Objekten verwendet, und neue Objekte werden auf dem Heap platziert. JVM ist eine Heap-basierte virtuelle Maschine, die auf einer separaten JVM-Instanz ausgeführt wird. Wenn ein Java-Programm über mehrere Threads verfügt, werden diese Threads gemeinsam genutzt Heap-Speicher. Wenn daher mehrere Threads auf den Heapspeicher zugreifen, müssen die Daten im Heap synchronisiert werden.

Heap-Speicher in C++ wird von Entwicklern geöffnet und freigegeben. In Java schließt die Garbage-Collection-Periode die Freigabe automatisch ab. Entwickler müssen nur den gewünschten Heap-Speicherplatz beantragen.

3. In Java wird Speicherplatz im Heap geöffnet, um das neue Objekt zu speichern, und dann wird im Stapel auf eine Variable verwiesen, um die erste Adresse des Objekts im Heap zu speichern Durch die in der Referenzvariablen im Stapelobjekt gespeicherte Adresse entspricht die Referenzvariable im Stapel einem Namen des Objekts im Heap.

Die Zugriffsgeschwindigkeit des Stapels ist schneller als die des Heaps. Die Stapelgröße und die Lebensdauer müssen dem Heap nicht mitgeteilt werden Compiler im Voraus, daher ist der Zugriff langsam.

Das obige ist der detaillierte Inhalt vonSo erkennen Sie den Unterschied zwischen Heap und Stack in Java-Anwendungen. 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