Home

Heapbereich

Der Heapbereich bezeichnet in der Informatik den Teil des Adressraums eines Prozesses, der für die dynamische Speicherverwaltung reserviert ist. Im Gegensatz zum Stack, der üblicherweise automatisch beim Funktionsaufruf angepasst wird, dient der Heap dazu, Objekte und Datenstrukturen zu speichern, deren Lebensdauer nicht an eine einzelne Funktion gebunden ist und die zur Laufzeit erzeugt und freigegeben werden müssen.

Der Heap wird vom Betriebssystem oder von der Laufzeitumgebung eines Programms als Speicherbereich bereitgestellt. Die Zuweisung

Treiber für Komplexität sind Lebensdauer, Fragmentierung und Leistung. Objekte im Heap haben variable Lebensdauer. Die Verwaltung

Typische Allokationsmechanismen umfassen First-fit, Best-fit, Buddy-Systeme und Slab-Allocatoren; moderne Systeme verwenden oft hybride Ansätze. In vielen

Beispiele: In C/C++ wird der Heap durch malloc und free verwaltet; in Java liegt die Heap-Verwaltung in

Siehe auch: Stack, Speicherverwaltung, Garbage Collection.

erfolgt
typischerweise
über
Bibliotheksroutinen
wie
malloc/free
(C),
new/delete
(C++)
oder
über
Garbage-Collection-Mechanismen
in
Sprachen
wie
Java
oder
C#.
Objekte
bleiben
dort,
bis
sie
freigegeben
oder
durch
den
GC
gesammelt
werden.
Die
Verwaltung
kann
manuell
erfolgen
oder
automatisiert
sein,
je
nach
Sprache
und
Laufzeitumgebung.
kann
manuell
erfolgen
oder
automatisiert
sein.
Typische
Problemstellungen
sind
externe
Fragmentierung
(unzusammenhängende
freie
Blöcke)
und
innere
Fragmentierung
(zu
große
belegte
Blöcke).
Die
Zuweisung
und
Freigabe
ist
in
der
Regel
langsamer
als
Stackzugriffe,
und
Cacheeffizienz
ist
schwieriger.
Laufzeitsystemen
kann
der
Heap
dynamisch
vergrößert
oder
verkleinert
werden,
abhängig
von
Bedarf
und
Adressraumgrenzen.
der
JVM
mit
Garbage
Collection;
in
Python
erfolgt
Allokation
durch
den
Interpreter.