Home

Minnesläckor

Minnesläckor är ett fel där program oavsiktligt behåller referenser till objekt som inte längre används, vilket hindrar minnet från att återvinnas. Över tid ökar minnesförbrukningen och programmet kan prestera sämre eller krascha när minnet tar slut.

I språk med automatiskt minneshantering uppstår läckor när referenser inte frigörs i tid, exempelvis globala variabler,

Konsekvenserna är ökad minnesanvändning, sämre prestanda och i värsta fall systemkrascher. Läckor i långlivade processer är

Detektion görs med profilerings- och minnesanalysverktyg, exempelvis Valgrind, AddressSanitizer, samt plattformsspecifika verktyg som Java VisualVM eller

Förebyggande metoder inkluderar tydligt ägarskap av minnesresurser, RAII och smarta pekare i C++, samt att bryta

långlivade
caches
eller
händelsehanterare
som
inte
avregistreras.
Äldre
minneshanteringsmotorer
kunde
inte
hantera
vissa
cykler,
men
moderna
GC:er
klarar
de
flesta.
I
språk
utan
automatisk
hantering,
som
C
och
C++,
uppstår
minnesläckor
när
minne
inte
frigörs
efter
användning
(glömda
free
eller
missade
free),
och
när
andra
resurser
som
filhandtag
inte
stängs
helt.
särskilt
problematiska
eftersom
de
byggs
upp
över
tid.
Chrome
DevTools.
Att
köra
belastningstester
och
granska
referenskedjor
hjälper
också
till
att
upptäcka
läckor.
starka
referenser
i
caches
eller
closures.
I
GC-språk
bör
man
använda
svaga
referenser
där
det
är
lämpligt
och
se
till
att
avregistrera
eventlyssnare
eller
bryta
DOM-referenser
i
webbapplikationer.
Genom
kodgranskning
och
regelbunden
profilering
kan
minnesläckor
ofta
förebyggas
eller
åtgärdas
tidigt.