Heim Java JavaErste Schritte Der Unterschied zwischen Stack und Heap in Java

Der Unterschied zwischen Stack und Heap in Java

Nov 11, 2019 am 09:54 AM
java

Der Unterschied zwischen Stack und Heap in Java

Bevor wir über Heap und Stack sprechen, sprechen wir über die Aufteilung des JVM-Speichers (virtuelle Maschine): (Empfohlenes Lernen: Java-Kurs )

Java-Programme müssen Speicherplatz zuweisen, wenn sie ausgeführt werden. Jede Software muss Speicherplatz zuweisen, wenn sie ausgeführt wird.

Die JVM öffnet einen Speicherbereich im Speicher, wenn sie ausgeführt wird, und teilt ihn beim Start sorgfältiger in ihren eigenen Speicherbereich auf, da jeder Speicherbereich in der virtuellen Maschine auf unterschiedliche Weise verarbeitet wird , muss es separat verwaltet werden.

Der JVM-Speicher ist in fünf Teile unterteilt:

1. Lokaler Methodenbereich; Methodenbereich;

4. Stapelspeicher;

Konzentrieren wir uns auf den Heap und den Stack:

Stapelspeicher:

Der Stapelspeicher ist zunächst einmal ein Speicherbereich, der lokale Variablen speichert. , alles, was in der Methode definiert ist, ist eine lokale Variable (Dinge außerhalb der Methode sind globale Variablen), und die innerhalb der for-Schleife definierten Variablen sind auch lokale Variablen. Die Funktion muss zuerst geladen werden, bevor die lokale Variable definiert werden kann, also die Methode Stapelt zuerst den Stapel und definiert dann die Variablen. Variablen haben ihren eigenen Gültigkeitsbereich und werden freigegeben, sobald sie den Gültigkeitsbereich verlassen.

Der Stapelspeicher wird sehr schnell aktualisiert, da der Lebenszyklus lokaler Variablen sehr kurz ist.

Heap-Speicher: speichert Arrays und Objekte (tatsächlich sind Arrays Objekte, die im Heap erstellt wurden, und Entitäten (Objekte) werden im Heap gespeichert). wird zum Kapseln von Daten verwendet und kapselt mehrere (mehrere Attribute einer Entität). Wenn eine Daten verschwindet, verschwindet die Entität nicht und kann weiterhin verwendet werden, sodass der Heap zu keinem Zeitpunkt freigegeben wird, der Stapel jedoch anders ist .sind alle Einzelvariablen. Sobald die Variablen freigegeben werden, sind sie verschwunden.

Obwohl Entitäten im Heap nicht freigegeben werden, werden sie als Müll behandelt. Java verfügt über einen Garbage-Collection-Mechanismus, um sie von Zeit zu Zeit zu sammeln.

Der Unterschied zwischen Heap und Stack:

1. Der Stapelspeicher speichert lokale Variablen, während der Heapspeicher Entitäten speichert

2. Die Aktualisierungsgeschwindigkeit des Stapelspeichers ist schneller als die des Heapspeichers, da der Lebenszyklus der lokalen Variablen sehr kurz ist.

3 im Stapelspeicher ist einmal Es wird freigegeben, wenn es fertig ist, und die im Heapspeicher gespeicherten Entitäten werden von Zeit zu Zeit vom Garbage-Collection-Mechanismus recycelt.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Stack und Heap in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1540
276
Excel finden und ersetzen Sie nicht funktionieren Excel finden und ersetzen Sie nicht funktionieren Aug 13, 2025 pm 04:49 PM

CheckSearchsets -ähnliche "MatchentirecellContents" und "Matchcase" ByexpandingOptionssinfindandReplace, sorgen für "Lookin" IssettoValuesand "Innere" toCorrectScope;

Bereitstellung einer Java -Anwendung Bereitstellung einer Java -Anwendung Aug 17, 2025 am 12:56 AM

Vorbereitungsdauerung von MajoringMavenorgradletobuildajarorwarfile, ExternalizingConfiguration

Wie konfigurieren Sie die Protokollierung in einer Java -Anwendung? Wie konfigurieren Sie die Protokollierung in einer Java -Anwendung? Aug 15, 2025 am 11:50 AM

Die Verwendung von SLF4J in Kombination mit Logback oder Log4J2 ist die empfohlene Möglichkeit, Protokolle in Java -Anwendungen zu konfigurieren. Es wird API- und Implementierungsbibliotheken eingeführt, indem entsprechende Maven -Abhängigkeiten hinzugefügt werden. 2. Rufen Sie den Logger durch den LoggerFactory von SLF4J im Code und schreiben Sie mit parametrisierten Protokollierungsmethoden entkoppelten und effizienten Protokollcode. 3. Definieren Sie das Protokoll -Ausgangsformat, die Ebene, das Ziel (Konsole, die Datei) und die Paket -Level -Protokollregelung über logback.xml oder log4j2.xml Konfigurationsdateien; 4. Aktivieren Sie optional die Funktionsscanning -Funktion der Konfigurationsdatei, um eine dynamische Anpassung der Protokollebene zu erreichen, und Springboot kann auch über den Aktuatorendpunkte verwaltet werden. 5. Befolgen Sie Best Practices, einschließlich

XML -Datenbindung mit Castor in Java XML -Datenbindung mit Castor in Java Aug 15, 2025 am 03:43 AM

Castorensxml-to-javaObjectMappingviadefaultConventionsorexplicitMapPingFiles; 1) DefineJavaclasses witgers/setzer;

Leistungsvergleich: Java vs. Go for Backend Services Leistungsvergleich: Java vs. Go for Backend Services Aug 14, 2025 pm 03:32 PM

GotypicaloffersBetterRuntimePerformance withHoGherThroughputandLowerLatency, insbesondere um/o-HeavyServices, DuetoitSLightgoroutinesandefficientScheduler, während Java, obwohl SlowertOstart, Canmatchgoincpu-BoundtaksafterTimization.2.2

Js fügen Element hinzu, um Array zu beginnen Js fügen Element hinzu, um Array zu beginnen Aug 14, 2025 am 11:51 AM

In JavaScript ist die häufigste Methode, um Elemente zu Beginn eines Arrays hinzuzufügen, die Verwendung der Unshift () -Methode. 1. Wenn Sie Unshift () verwenden, können Sie das ursprüngliche Array direkt ändern. Sie können ein oder mehrere Elemente hinzufügen, um die neue Länge des hinzugefügten Arrays zurückzugeben. 2. Wenn Sie das ursprüngliche Array nicht ändern möchten, wird empfohlen, den Erweiterungsoperator (z. B. [NewLement, ... arr]) zu verwenden, um ein neues Array zu erstellen. 3.. Sie können auch die concat () -Methode verwenden, um das neue Element -Array mit der ursprünglichen Nummer zu kombinieren, das neue Array zurückgibt, ohne das ursprüngliche Array zu ändern. Zusammenfassend verwenden Sie Unshift () beim Ändern des ursprünglichen Arrays und empfehlen Sie den Erweiterungsoperator, wenn Sie das ursprüngliche Array unverändert halten.

Wie man mit JSON in Java arbeitet Wie man mit JSON in Java arbeitet Aug 14, 2025 pm 03:40 PM

TOCHORKWITHJSONINJAVA, Useathird-partylibrary-Likejackson, Gson, Orjson-B, Asjavalacksbuilt-Insupport; 2.FordeSerialisierung, MapjsontojavaObjectSuSusingObjectMapperinjacksonorgson.fromjson;

Was ist das Assert -Schlüsselwort in Java? Was ist das Assert -Schlüsselwort in Java? Aug 17, 2025 am 12:52 AM

TheassertKeywordinjavaisUsedTovalidateAsStionsduringDevelopment, ThrowinganasStorionErroriftheConditionisfalse.2.ithastWOforms: AssertCondition; andassertCondition: message; withelatterProvrididing -Kustomerform

See all articles