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.
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.
Gerelateerde begrippen
- Abstraction
- Access Control
- Affiliate link
- AJAX
- Algoritme
- Apache
- API
- App
- Big data
- Binary Tree
- Bitbucket
- Blockchain
- Branch
- Bug
- Caching
- ChatGPT
- Cloudflare
- Codebase
- Content Delivery Network (CDN)
- Content Management Systeem
- Cookietijd
- Cross-Site Scripting (XSS)
- Customer Relationship Management (CRM)
- Database Management System (DBMS)