Skip to main content

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 muliggjør opprydding av ubrukte referanseobjekter og tilhørende svake referanser.

I dataprogrammering opprettes en sterk referanse typisk som standard når et objekt opprettes, og minnet okkupert avObjektet forblir tildelt så lenge den sterke referansen forblir levedyktig.En sterk referanse blir ugyldig og det tilhørende objektminnet blir frigjort kort tid etter en sterk referanse og objektet blir flagget som ikke lenger blir brukt 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 normaltTilgjengelig på språk som er forsterket av søppelinnsamlingsundersystemer, inkludert Java, Python, Perl, C#og .NET Framework.I C ++ er imidlertid programmerere vanligvis ansvarlige for å sikre at minneopprydningen.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.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.