När ett datorprogram behöver för att lagra information , det första behöver allokera minne . Efter att data inte längre behövs , deallokerar programmet minnet så att ett annat program kan använda sig av det . Om ett program allokerar minne utan avallokering minnet efteråt , kommer detta program att bli en belastning på systemresurserna . 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 processen för att hitta minnesläckor densamma . Först måste minnesläcka som skall detekteras. En minnesläcka brukar anges med linjärt ökande minnesanvändning , även om vissa specialiserade verktyg kan berätta direkt hur mycket minne ett program har tilldelats eller avallokerats . När en minnesläcka upptäcks det måste isoleras . Detta görs genom att testa varje funktion eller ett objekt för sig för att avgöra var läckan sker . Då programmeraren måste räkna ut det specifika felet som orsakar läckan och åtgärda det .
C /C + +
Program skrivna i C och C + + är ökända för att ha minne läckor eftersom användaren måste manuellt fördela och deallocate minne med malloc kommandot . Den ccmalloc Verktyget övervakar malloc funktion och rapporter vad minnet inte avallokerats , var avallokeras flera gånger eller till och med tilldelats utan att ha avallokerats i första hand . Andra mer specialiserade program som NJAMD ( " Not Just Another Malloc Debugger " ) finns också för att hitta minnesläckor i C och C + +.
MSDN
Utvecklare använda Microsofts utvecklingsmiljö kan använda ml kommandot för att hitta minnesläckor . Skriva ml vid Cesh prompten kommer få upp en lista över alla program som körs och hur mycket minne som används , skrivs som " r /w = " följt av det antal sidor som ansökan har tilldelats . Oväntade ökningar i minnesanvändning indikerar 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 avallokering minne , men de fortfarande dyker upp . Java virtuell maskin , miljön som implementerar Java-program , har en automatisk sophämtare som deallokerar minnet när det inte längre refereras av andra klasser . Minnesläckor kan uppstå när minnet håller på att refereras när det inte längre behövs , vilket gör att den kan hoppas över av sophämtare . Jprobe är en debugger som kan ta ögonblicksbilder av minnesanvändningen som ett Java-program körs , hjälper programmerare att hitta källan till en minnesläcka .