Wanneer een computerprogramma nodig heeft om informatie op te slaan , het eerst nodig heeft om geheugen toe te wijzen . Na die data niet langer nodig is , het programma deallocates het geheugen, zodat een ander programma kan gebruik van maken . Als een programma geheugen toewijst zonder daarna loslaten en het geheugen , zal dat programma een aanslag op systeembronnen geworden . Deze bugs worden " memory leaks " en het wegwerken van hen is een belangrijk onderdeel van debuggen . Proces Ongeacht welke taal het programma is geschreven in , het fundamentele proces voor het vinden van memory leaks is hetzelfde . Ten eerste , het geheugen lek moet worden opgespoord . Een geheugenlek wordt meestal aangeduid met lineair toeneemt geheugengebruik , hoewel sommige gespecialiseerde tools die u direct kunt zien hoeveel geheugen een programma heeft toegewezen of deallocated . Zodra een geheugenlek wordt ontdekt moet worden geïsoleerd . Dit wordt gedaan door elke functie of object afzonderlijk bepalen waar de lekkage optreedt . Dan is de programmeur moet achterhalen van de specifieke fout die wordt veroorzaakt door het lek en te corrigeren . C /C + + Programma geschreven in C en C + + zijn berucht voor het feit dat het geheugen lekken omdat de gebruiker moet handmatig toewijzen en vrijgeven geheugen met behulp van de malloc commando . De ccmalloc instrument bewaakt de malloc -functie en rapporteert wat geheugen niet werd deallocated , werd meerdere malen deallocated of zelfs toegekend zonder dat deze is deallocated in de eerste plaats . Andere meer gespecialiseerde programma's zoals NJAMD ( " Not Just Another Malloc Debugger " ) bestaan ook voor het vinden van geheugenlekken in C en C + + . MSDN Ontwikkelaars met behulp van Microsoft's ontwikkelomgeving kan het commando ml te gebruiken om het geheugen lekken te vinden . Typen ml bij de Cesh prompt verschijnt een lijst met elke actieve toepassing en de hoeveelheid geheugen die wordt gebruikt , geschreven als " r /w = " gevolgd door het aantal pagina's dat verzoek heeft toegewezen . Een onverwachte toename in geheugengebruik geven aan dat de toepassing een geheugenlek . Java Veel programmeurs denken dat Java-programma's zijn immuun voor het geheugen lekken , omdat de programmeur is niet verantwoordelijk voor de toewijzing en het loslaten en het geheugen , maar ze doen nog steeds opduiken . Java virtual machine , de omgeving die Java programma implementeert , een automatische garbage collector die herinnering deallocates wanneer deze niet meer verwezen door andere klassen . Geheugen lekken kunnen optreden wanneer het geheugen wordt verwezen als het niet meer nodig , waardoor het boven de garbage collector worden overgeslagen . JProbe is een debugger die snapshots van geheugengebruik kan nemen als een Java-toepassing loopt , helpt programmeurs om de bron van een geheugenlek vinden .
|