Memory Leak

Memory Leak

Ein Memory Leak ist ein Programmierfehler, bei dem ein Programm Arbeitsspeicher belegt und ihn nie wieder freigibt. Der belegte Speicher wächst dadurch immer weiter an, bis das Programm oder der ganze Rechner langsam wird oder abstürzt.

Jeder Computer hat einen Arbeitsspeicher. Das ist der schnelle Zwischenspeicher, in dem ein laufendes Programm seine Daten ablegt, solange es sie braucht. Ein Programm fordert davon ständig kleine Stücke an, etwa für ein geladenes Bild oder eine Liste von Namen. Wenn es ein Stück nicht mehr braucht, soll es dieses wieder zurückgeben. Ein Memory Leak, auf Deutsch Speicherleck, liegt vor, wenn diese Rückgabe ausbleibt. Das Programm hält dann Speicher besetzt, den niemand mehr benutzt, und dieser Berg wächst mit jeder Minute Laufzeit.

Warum der Rechner nach Stunden plötzlich kriecht

Ein Speicherleck fällt anfangs gar nicht auf. Wenn ein Programm pro Minute nur ein paar Kilobyte verliert, merkt man beim Testen nichts. Erst nach Stunden oder Tagen Dauerbetrieb summiert sich der Verlust zu Gigabyte. Genau deshalb sind Memory Leaks so tückisch: Sie überstehen die üblichen kurzen Tests der Entwickler unbemerkt.

Ist der Arbeitsspeicher voll, reagiert das Betriebssystem. Es lagert Daten auf die viel langsamere Festplatte aus, was den ganzen Rechner zäh macht. Reicht auch das nicht, beendet das System das Programm hart. Ein Handyspiel, das nach einer Stunde einfach schließt, ist ein typisches Symptom.

Besonders teuer wird das auf Servern. Ein Dienst, der Millionen Anfragen pro Tag beantwortet, läuft im Idealfall wochenlang durch. Manche Firmen behelfen sich damit, ihre Server nachts routinemäßig neu zu starten. Das ist keine Lösung, sondern nur ein Pflaster über einem Fehler, den niemand gefunden hat.

Wie Speicher verloren geht

Man kann sich Arbeitsspeicher wie ein Regal in einer Bibliothek vorstellen. Ein Programm reserviert ein Fach und legt etwas hinein. Danach merkt es sich, in welchem Fach die Sache liegt. Genau dieser Merkzettel ist der wunde Punkt. Wirft das Programm den Zettel weg, ohne das Fach vorher zu räumen, ist das Fach für immer blockiert. Niemand weiß mehr, was darin liegt, und niemand kann es freigeben.

In Sprachen wie C oder C++ muss der Programmierer jedes Fach selbst wieder räumen. Vergisst er eine einzige Stelle in einer Schleife, die millionenfach durchlaufen wird, entsteht ein Leck. Modernere Sprachen wie Java, Python oder JavaScript haben dafür eine automatische Müllabfuhr, den Garbage Collector. Der räumt alle Fächer weg, zu denen kein Merkzettel mehr existiert.

Trotzdem gibt es auch dort Lecks, nur anders. Sie entstehen, wenn das Programm Merkzettel aufhebt, die es längst nicht mehr braucht. Ein häufiger Fall ist eine Liste, an die immer nur angehängt und aus der nie gelöscht wird. Für die Müllabfuhr sieht dieser Speicher benutzt aus, obwohl er es nicht ist. Aufspüren lassen sich solche Fehler mit Profilern, also Werkzeugen, die messen, welche Datenart im Speicher wächst.

Von Browser-Tabs bis zu KI-Servern

Am häufigsten begegnet man Speicherlecks im Browser. Eine Webseite, die man tagelang offen lässt, kann mehrere Gigabyte belegen. Der Task-Manager des Betriebssystems zeigt das an: Man sieht dort für jedes Programm den belegten Speicher. Wächst diese Zahl bei einem Programm stetig, ohne dass man mehr damit macht, ist das ein deutlicher Hinweis.

In Tech-News taucht der Begriff bei Updates und Sicherheitslücken auf. Eine Änderungsliste enthält oft den Punkt, ein Memory Leak sei behoben worden. Manchmal ist ein Leck sogar ein Sicherheitsproblem: Wenn nicht freigegebener Speicher später an ein anderes Programm geht, können Reste alter Daten mitwandern. Der berühmte Fehler Heartbleed von 2014 gehörte in diese Kategorie.

Auch beim Betrieb von KI-Modellen spielt das Thema eine Rolle. Solche Modelle brauchen sehr viel Speicher auf spezialisierten Grafikkarten, und dieser Speicher ist teuer und knapp. Ein Leck im Programm, das die Anfragen verwaltet, kann einen Server nach wenigen Stunden lahmlegen. Abzugrenzen ist das vom normal hohen Speicherbedarf: Ein Modell, das dauerhaft viel Speicher belegt, hat kein Leck. Ein Leck liegt nur vor, wenn der Verbrauch ohne Grund immer weiter steigt.

Subscribe free. Unsubscribe the second it sucks.

High-signal news across AI, business, UX, and tech. Every morning.