En rekke metoder er tilgjengelige for å fastslå om et datamaskinprogram lekker hukommelse . En programmerer kan sile gjennom kildekoden å sørge for at alle minnebruken er blitt frigitt , kan han skrive et program som tester sin programvare for minnelekkasjer , kan han tenke ut en minnehåndtering ordning som tillater ham å holde styr på brukt minne eller han kan bruke et tredjeparts program som tester for minnelekkasjer . Hva er en minnelekkasje ?
En minnelekkasje er en uønsket minnebruk av et dataprogram , der programmet tildeler minne for bruk og unnlater å deallocate det en gang minnet er ikke lenger i bruk . Denne del av minnet vil ikke lenger være tilgjengelig til dataprogrammet . Et program som lekker nok minne enn nok tid kan føre til at systemet går tom for ledig minne , noe som kan føre til at programmet eller datasystem for å mislykkes. Minnelekkasjer kan også føre til et system for å bremse ned til en utilfredsstillende hastighet, grunnet minne juling . Programmer som kjører i lange perioder av gangen , utføre mange bevilgninger eller allokere minne i store biter kan være spesielt utsatt for farlige minnelekkasjer .
Bruk god koding praksis
beste måten å sikre at programmet ikke lekker minne er å skrive god kode som hensiktsmessig styrer systemets ressurser . Sørg for at for hver funksjon samtale som tildeler minne, er det en tilsvarende samtale som deallocates minne. Noen språk som Java , C # og VB.NET , gi søppelrydding, der systemet regelmessig sjekker at tildelte minnet er fortsatt i bruk. Selv om disse systemene ikke hindre minnelekkasjer helt, er det mindre sannsynlig at de vil inntreffe . Andre språk, som C + + , la bunken tildeling, hvor en del av minnet deallocated automatisk når den variabelen som referanser den går ut av omfanget . Ved å bruke riktig språk for oppgaven og opprettholde gode programvare skriveferdigheter praksis , kan mange minnelekkasjer unngås helt .
Lag et minnebehandlingsproblem
Noen datamaskin programmer krever så mye kode for å kjøre at lesing gjennom programmet for å finne hvor minnet har lekket er rett og slett ikke gjennomførbart. I disse tilfellene kan det være fornuftig å skrive et minne leder komponent til programmet. Programvaren vil da ha en enhetlig grensesnitt for tildeling av eventuelle biter av minne , og lederen holder rede på hvor og hvordan disse biter er tildelt. I sin enkleste form, gir manager bare tilbakemeldinger, slik at programmereren å se hvor mye minne som brukes , og hvilke komponenter som bruker den. Det kan også gi søppelrydding og kontroll hvor minnet er tildelt og deallocated , noe som gir en programmerer bare ett sted å lete etter minnelekkasjer , i stedet for all koden for hele programmet .
Lag et testprogram
Man kan ofte se på minnet som brukes av et program med et system verktøy , som for eksempel Windows Task manager eller "topp " på Unix /Linux for å avgjøre om minne blir lekket . Dette er ikke alltid bevis for en minnelekkasje , men kan gi noen innledende tilbakemeldinger. Noen ganger er det mulig å skrive et enkelt program som tester de forskjellige komponentene i et stykke programvare for å finne ut om minnet lekker. Testprogrammet kan dynamisk bestemme eller gis forkunnskaper om hvor mye minne et dataprogram skal bruke. Det sikrer da at beløpet som brukes er beløpet som skal brukes . Hvis oppstår en minnelekkasje , gir testprogrammet tilbakemelding på hvordan det skjedde , slik at programmereren å fikse lekkasjen .
Tredjeparts programvare
Programmerere kan bruke mange tredje -parts programmer og biblioteker for å teste om deres programvare lekker minne . I Microsoft. NET Framework , kan man aktivere minnelekkasje testing ved hjelp av debug versjoner av minnetildeling funksjoner. På Linux , Unix og Mac , kan du bruke verktøy, for eksempel Valgrind , dmalloc og Forsikring + + for å isolere en minnelekkasje . Mange minne debuggers er også tilgjengelig for Windows. Det beste verktøyet for jobben avhenger av utviklingsmiljø og språket som brukes , samt spesifikke kjennetegn ved programmet til å feilsøke, som størrelse , hastighet krav og de måten den samhandler med systemet. Det finnes mange verktøy å velge mellom , og de kan være en velsignelse for frustrerte programmerer lei av å lete etter den siste unnvikende lekkasje .