När en dator program behöver för att lagra information , det första behöver allokera minne. Efter att data inte längre behövs , deallocates programmet minnet så att ett annat program kan använda sig av den . Om ett program allokerar minne utan deallocating minnet efteråt kommer det programmet att bli en belastning på system resurserna . Dessa fel kallas " minnesläckor " och bli av med dem är en viktig del av felsökning .
Process
Oavsett vilket språk programmet är skrivet i , är den grundläggande proceduren för att hitta minnesläckor samma . Först måste minnesläcka att upptäcka . Minnesläcka brukar anges med linjärt ökande minne , även om vissa speciella verktyg kan berätta direkt hur mycket minne ett program har tilldelats eller avallokerat . När en minnesläcka upptäcks det måste isoleras . Detta görs genom att testa varje funktion eller ett objekt separat för att fastställa var läckan sker . Sedan programmeraren måste räkna ut det specifika felet som orsakar läckan och åtgärda.
C /C + +
Program skrivna i C och C + + är ökända för att ha minnesläckor eftersom användaren måste manuellt fördela och frigöra minne använder den malloc kommandot . Den ccmalloc Verktyget övervakar malloc funktion och rapporter vad minnet inte var avallokerat var avallokerat flera gånger eller till och med tilldelats utan att ha avallokerat i första hand . Andra mer specialiserade program såsom NJAMD ( " inte bara ännu malloc felsökare " ) finns också för att finna minnesläckor i C och C + + .
MSDN
Utvecklare som använder Microsofts utvecklingsmiljö kan använda ml kommandot för att hitta minnesläckor . Skriva ml vid cesh prompten visas en lista över alla program som körs och hur mycket minne som används , skriven som " r /w=" följt av antalet sidor att en ansökan har tilldelats . Oväntade ökningar i minnesanvändning på att programmet har en minnesläcka .
Java
Många programmerare tror att Java -program är immuna mot minnesläckor eftersom programmeraren inte är ansvarig för fördelning och deallocating minne , men de gör fortfarande gröda upp . Java Virtual Machine , miljö som implementerar Java -program har en automatisk sophämtare som deallocates minnet när det inte längre refereras till av andra klasser . Minnesläckor kan inträffa när minnet är som refereras när det inte längre behövs , vilket ledde till att hoppas över av sophämtare . Jprobe är en debugger som kan ta ögonblicksbilder av minnesanvändning som en Java- program körs , hjälper programmerare att hitta källan till en minnesläcka .