Zurück zur Übersicht

Begriff

Memory Leak

Development Debugging S2
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Dein Programm holt sich RAM ("Ich merke mir dieses Bild"). Es vergisst, den RAM zurückzugeben, obwohl es das Bild nicht mehr braucht. Der RAM füllt sich langsam. Nach 1 Stunde sind 8GB voll. Der PC wird langsam (Swapping auf Festplatte). Nach 2 Stunden stürzt das Programm ab ("Out of Memory"). Ein Memory Leak ist ein Loch im Eimer. Wasser fließt rein, aber fließt an der falschen Stelle raus (oder bleibt drin und läuft über).

Merksatz: Ein Fehler in einem Computerprogramm, bei dem Speicher, der nicht mehr benötigt wird, nicht freigegeben wird, was zu stetig steigendem Speicherverbrauch und schließlich zum Absturz führt.


Quick-Check

  1. Sind Leaks schlimm?
    In kurzlebigen Scripts (PHP Request) egal, weil der Speicher nach 0.1s eh freigegeben wird. In langlaufenden Apps (Server, SPA, Desktop-App) tödlich.
  2. Browser und Leaks?
    Browser sind berüchtigt. Wenn du einen Tab schließt, sollte der RAM frei werden. Früher (IE6) klappte das oft nicht. Heute (Chrome/Firefox) ist es sehr gut, aber SPAs können den RAM eines offenen Tabs zum Platzen bringen.
  3. Circular Reference?
    Siehe Garbage Collection. In modernen GCs (Mark-and-Sweep) kein Problem mehr. In alten IEs (Ref Counting für DOM) war es die Hauptursache für Leaks.