Hva er en svak referanse?

En svak referanse er en referanse til et objekt i minnet som ikke forhindrer at et objekt blir renset opp av søppelinnsamlingsrutiner på grunn av dets tilknytning til objektet. Denne typen referanser brukes ofte for å eliminere minnelekkasjer når det eksisterer spesielle forhold som forhindrer at normal søppelinnsamling skjer. Programmeringsalgoritmer som bruker en sirkulær referanse eller har ekstern informasjon i en hurtigbuffer eller spesiell strukturfordel ved å bruke svake referanser. Bruk av svake referanser i denne typen situasjoner gir mulighet for å rydde opp i ubrukte referentobjekter og tilhørende svake referanser.

I dataprogrammering opprettes en sterk referanse vanligvis som standard når et objekt opprettes, og minnet okkupert av objektet forblir tildelt så lenge den sterke referansen forblir levedyktig. En sterk referanse blir ugyldig og dens tilknyttedeObjektets minne blir frigjort kort tid etter en sterk referanse og objektet blir flagget ettersom ikke lenger brukes av et program. I visse situasjoner, for eksempel socket-programmering eller bildemanipulasjonsapplikasjoner, har klassene som brukes til å lage arbeidsobjekter ikke innebygd kapasitet til å lagre tilleggsinformasjon som er nødvendiggjort av en spesifikk applikasjon. Ytterligere detaljer for forbigående objekter som tilkoblinger eller bilder må lagres i tilleggsbufferobjekter og kobles til de forbigående objektene ved referanser. Når en svak referanse brukes i stedet for sterk referanse, er den ekstra informasjonen ikke bundet av referansen og kan fjernes fra hurtigbufferen av søppelsamleren når referanseobjektet er merket som ikke-levedyktig.

Svake referanseklasser er normalt tilgjengelig på språk som er forsterket av søppelinnsamlingsundersystemer, inkludert Java, Python, Perl, C#og .NET Framework. I C ++ er imidlertid programmerere typisk resPonsible for å sikre minneopprydding. Dette språket har implementert en smart pekerklasse som gir noen av de samme funksjonalitetene som svake referanser og søppelinnsamling gir, og bidrar til å redusere minnelekkasjer forårsaket av feil peker.

For ytterligere å lette minnestyring, kan språk med søppelinnsamlingsanlegg i tillegg forbedre funksjonaliteten til et språk ved å gi finere gradienter av andre referanser enn den sterke eller svake referansen. Datatyper som myke referanser og fantomreferanser kan inkluderes i disse språkene, noe som gir mulighet for varierende nivåer av gjenfangst eller varsling av objekter. Programmerere som bruker språk med automatisert søppelinnsamling, bør gjøre seg kjent med alle referanseklassene som er tilgjengelige for å forbedre applikasjonsytelsen.

ANDRE SPRÅK