Heap, Stack, GC grob
Lokale Variablen und Aufrufketten liegen auf dem Thread-Stack. Objekte liegen auf dem Heap und werden vom Garbage Collector freigegeben, wenn sie unerreichbar sind.
StackOverflowError: zu tiefe Aufrufe. OutOfMemoryError: Heap voll.
Wo gebraucht
Allokationsdruck, Escape Analysis, GC-Pausen als Latenzursache. Stack Frames erklären Rekursionlimits; Heap erklärt Objektgraphen und Leaks.
Vertiefung
Jeder Thread verwaltet Aufrufrahmen mit lokalen Variablen und Rücksprunginformationen auf seinem Stack. Objekte werden typischerweise in einem gemeinsam verwalteten Speicherbereich angelegt; lokale Referenzen können auf diese Objekte zeigen. Eine lokale Variable macht das referenzierte Objekt daher nicht automatisch threadlokal.
Der Garbage Collector findet Objekte, die von Wurzeln wie aktiven Stacks und statischen Feldern nicht mehr erreichbar sind. Er entscheidet über Speicherfreigabe, nicht über das rechtzeitige Schliessen externer Ressourcen. Dateien und Sockets benötigen deshalb explizite Lebensdauersteuerung.
Schwierigkeitsstufen
- Lokale Referenz und referenziertes Objekt unterscheiden.
- Erreichbarkeit von GC-Wurzeln aus verfolgen.
- Speicherbereinigung und Ressourcenfreigabe trennen.
Fallstricke
Ein Objekt wird nicht gesammelt, nur weil eine einzelne Referenz den Gültigkeitsbereich verlässt. Solange ein anderer erreichbarer Pfad existiert, bleibt es lebendig. System.gc ist ausserdem keine verlässliche Freigabegarantie.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Beginner
- Completed: 0 users