Skip to main content

Vad är en svag referens?

En svag referens är en hänvisning till ett objekt i minnet som inte förhindrar att ett objekt städas upp genom skräpuppsamlingsrutiner på grund av dess associering med objektet.Denna typ av referens används ofta för att eliminera minnesläckor när speciella förhållanden finns som förhindrar att normal skräpuppsamling inträffar.Programmeringsalgoritmer som använder en cirkulär referens eller har främmande information i en cache eller specialstrukturfördel genom att använda svaga referenser.Användningen av svaga referenser i dessa typer av situationer möjliggör rengöring av oanvända referensobjekt och deras tillhörande svaga referenser.

I datorprogrammering skapas vanligtvis en stark referens som standard när ett objekt skapas och minnet som ockuperas av avObjektet förblir tilldelat så länge den starka referensen förblir livskraftig.En stark referens blir ogiltig och dess tillhörande objekt minne frigörs strax efter en stark referens och dess objekt flaggas eftersom det inte längre används av ett program.I vissa situationer, såsom uttagsprogrammering eller bildmanipulationsapplikationer, har klasserna som används för att skapa arbetsobjekt inte den inbyggda kapaciteten att lagra ytterligare information som krävs av en specifik applikation.De ytterligare detaljerna för övergående objekt som anslutningar eller bilder måste lagras i kompletterande cache -objekt och kopplas till de övergående objekten efter referenser.När en svag referens används istället för stark referens, är den extra informationen inte bunden av referensen och kan tas bort från cachen av skräpsamlaren när referensobjektet har markerats som icke-livskraftigt.

Svaga referensklasser är normaltFinns på språk som förstärks av delsystem för sopor, inklusive Java, Python, Perl, C#och .NET -ramverket.I C ++ är programmerare emellertid vanligtvis ansvariga för att säkerställa minne.Detta språk har implementerat en smart pekarklass som ger några av samma funktionaliteter som svaga referenser och skräpuppsamling ger, vilket hjälper till att minska minnesläckor orsakade av felaktig pekare att rensa upp.

För att ytterligare underlätta minneshantering, kan språk med skräpinsamlingsanläggningar dessutom dessFörbättra funktionaliteten hos ett språk genom att tillhandahålla finare gradienter av andra referenser än den starka eller svaga referensen.Datatyper som mjuka referenser och fantomreferenser kan inkluderas i dessa språk, vilket möjliggör olika nivåer av återhämtning av objekt eller återbetalning.Programmerare som använder språk med automatiserad skräpsamling bör bekanta sig med alla referensklasser som finns tillgängliga för att förbättra applikationsprestanda.