Terug naar begrippenlijst

Memory leak

Een memory leak is een stukje vergeten geheugen in je code. Je applicatie claimt geheugen om iets te doen (logisch), maar ‘vergeet’ het daarna weer vrij te geven. En dat geheugen blijft dus bezet – ook al is het eigenlijk niet meer nodig. Gevolg: je app of website wordt langzaam of crasht zelfs. Denk aan een kraan die je net open genoeg laat staan om langzaam je huis te laten overstromen. Duurt even, maar uiteindelijk zit je met natte voeten.

Geschreven door Remco Thijssen

Zwaaiende emoji

Remco Back-end developer

Meer over Remco

Inhoudsopgave

Vergeten stukjes data die aan je website vreten

Elke applicatie gebruikt werkgeheugen (RAM) om taken uit te voeren. Dat is normaal. Maar zodra een taak klaar is, hoort het gebruikte geheugen weer vrijgegeven te worden. Bij een memory leak gebeurt dat niet.

Bijvoorbeeld: je maakt een lijstje aan in je code, gebruikt het eenmalig, maar laat de verwijzing staan. Je softwareprogramma denkt: “Oh, dit lijstje wordt nog gebruikt”, en houdt het in het geheugen. Zelfs al doet het niets meer. Doe dat een paar keer… en voor je het weet zit je RAM vol met vergeten stukjes data die nergens meer voor dienen.

Waar ontstaat het lek meestal?

Memory leaks ontstaan meestal niet door kwade opzet, maar simpelweg door onhandigheid of de complexiteit van een applicatie. Ze sluipen er vaak in via oneindige loops of timers die nooit worden gestopt, verwijzingen naar objecten die eigenlijk allang niet meer nodig zijn. Ook event listeners die wel worden aangemaakt, maar niet netjes worden opgeruimd – iets wat vooral in JavaScript regelmatig gebeurt – kunnen boosdoeners zijn.

Ook externe bibliotheken of plugins met slecht geheugenbeheer kunnen roet in het eten gooien. In grote applicaties of bij systemen die langdurig blijven draaien, zoals servers of games, stapelen deze kleine lekken zich op. En op een gegeven moment merk je het onvermijdelijk: je app wordt trager, je geheugenverbruik stijgt, en uiteindelijk crasht de boel.

Onnavolgbaar… totdat de bom barst

Het lastige van memory leaks: ze zijn vaak onzichtbaar… tot het misgaat. Je app of site start prima, maar wordt na verloop van tijd steeds trager. Soms crasht hij, soms zie je alleen stijgende geheugengebruik in je monitoring. Typische symptomen van een memory leak zijn:

  • Trage prestaties na langere tijd
  • Vastlopende processen
  • Onverklaarbare crashes
  • Server die plots veel meer geheugen vraagt

Bij websites of front-end apps merk je het vooral bij tabbladen die lang openstaan. Bij servers pas na dagen of weken draaien.

Voorkomen is beter dan genezen

Memory leaks zijn frustrerend, maar gelukkig vaak goed te voorkomen (en op te sporen). Preventie begint bij structuur: zorg dat je variabelen, timers, listeners en objecten altijd netjes opruimt. Gebruik moderne programmeertalen of frameworks die je helpen met automatisch geheugenbeheer (zoals garbage collection in JavaScript of Python).

En als je er al één hebt? Gebruik dan onderstaande tools om het probleem als de wiedeweerga te verhelpen:

  • Chrome DevTools (voor front-end)
  • Heap profilers (bijv. in Node.js of Python)
  • APM-tools zoals New Relic of Datadog (voor servers)

Veelgestelde vragen

Ja, een memory leak is een bug, maar wel specifiek eentje die met geheugenbeheer te maken heeft.

Nee, alle talen kunnen ermee te maken krijgen – al helpt garbage collection in talen als JavaScript of Python wel een beetje.

Zeker niet. Vaak zit het probleem in één klein stukje code of in een third-party module die je gebruikt.

Let op stijgend geheugenverbruik over tijd, zonder dat het daalt. Monitoringtools of profilers helpen om het zichtbaar te maken.

Remco Thijssen Back-end developer

Meer over Remco

Ik heb de opleiding Applicatie en mediaontwikkelaar niveau 4 gevolgd bij Gildeopleidingen in Venray. Daarnaast ben ik momenteel aan het afstuderen aan de HAN voor de opleiding HBO-ICT in Arnhem. Dit is een deeltijdopleiding die ik volg naast mijn werk bij Wux. Ik werk sinds 2021 bij Wux als back-end developer. Hier ben ik als stagiaire begonnen. Ondertussen ben ik doorgegroeid en heb ik meerdere functies zoals back-end developer en projectmanager. Dit betekent dat ik alles wat ik tijdens mijn studie leer kan toepassen in mijn werk, maar ook veel praktijkervaring op doe naast de theorie. Ik pak complexe problemen aan en ben altijd op zoek naar de beste oplossing. Dit doe ik door mijn kennis die ik heb opgedaan toe te passen en up to date te blijven met de nieuwste technieken.

Twee mannen in overleg tijdens het werk achter hun computerschermen
Zwaaiende emoji

Thijn Back-end developer

Op zoek naar slimme software-oplossingen die jouw bedrijf efficiënter maken?

Het team van Wux ontwikkelt maatwerk software die aansluit bij jouw behoeften. Neem vandaag nog contact op en ontdek hoe we jouw bedrijf elke dag succesvoller kunnen maken.

Meer over software