Der Stack und der Heap in .NET

Der Stack und der Heap sind die Orte, an denen Variablen und Konstanten abgelegt werden. Jeder hat bezüglich der Lebensspanne der Objekte eine andere Semantik.

Der Stack und der Heap in .NET

Der Stack

Der Stack ist ein Speicherbereich, in dem lokale Variablen und Parameter gespeichert werden. Der Stack wächst und schrumpft sobald Funktionen betreten und wieder verlassen werden.

Der Heap

Der Heap ist ein Speicherabschnitt, in dem Objekte (also Instanzen von Referenztypen) liegen. Immer dann, wenn ein neues Objekt erzeugt wird, wird auf dem Heap dafür Platz reserviert und eine Referenz auf dieses Objekt zurückgegeben. Während der Ausführung eines Programms füllt sich der Heap, während neue Objekte angelegt werden. Die Laufzeitumgebung hat einen Garbage Collector, der regelmäßig Objekte vom Heap entfernt, sodass dem Programm nicht der Speicher ausgeht. Ein Objekt kann dann vom Heap entfernt werden, wenn es von keinem Objekt mehr referenziert wird, das selbst noch lebt.

Statische Felder und Konstanten

Der Heap wird auch genutzt,  um statische Felder und Konstanten zu speichern. Anders als Objekte, die auf dem Heap untergebracht sind (und von der Garbage Collection gelöscht werden können), leben diese Daten, bis die Anwendungsdomäne beendet wird.

Code-Beispiel

Dieses Code-Beispiel verdeutlicht schön das unterschiedliche Veralten von Heap und Stack:

vor 3 Monaten