Bei der Ausführung eines Programms werden verschiedene Speicherbereiche reserviert. Einer davon ist der Heapspeicher. Im Heapspeicher werden dynamisch zugewiesene Daten abgelegt. Dazu gehören in Java alle zur Laufzeit erzeugten Objekte.
Werden Ressourcen nicht mehr benötigt (nicht mehr referenziert), können sie durch den Garbage-Collector aus dem Heapspeicher gelöscht werden. Dadurch kann dieser Speicherbereich durch das Programm wieder verwendet werden.