Kaj je šibka referenca?

Šibka referenca je sklicevanje na objekt v pomnilniku, ki ne preprečuje, da bi objekt očistili rutine zbiranja smeti zaradi njegove povezave z objektom. Ta vrsta referenc se običajno uporablja za pomoč pri odpravljanju puščanja pomnilnika, kadar obstajajo posebni pogoji, ki preprečujejo normalno zbiranje smeti. Algoritmi programiranja, ki uporabljajo krožno referenco ali hranijo tuje informacije v predpomnilniku ali posebni strukturi, imajo koristi od uporabe šibkih referenc. Uporaba šibkih referenc v tovrstnih situacijah omogoča čiščenje neuporabljenih referenčnih objektov in z njimi povezanih šibkih referenc.

V računalniškem programiranju se močna referenca običajno ustvari privzeto, ko je objekt ustvarjen, in pomnilnik, ki ga zaseda objekt, ostane dodeljen, dokler ostane močna referenca sposobna preživeti. Močna referenca se razveljavi in ​​pomnilnik povezanega objekta se sprosti kmalu po tem, ko je močna referenca in njen objekt označen, da ga program ne uporablja več. V določenih situacijah, kot so programiranje vtičnic ali aplikacije za manipulacijo slik, razredi, ki se uporabljajo za ustvarjanje delovnih objektov, nimajo vgrajene zmogljivosti za shranjevanje dodatnih informacij, ki jih zahteva posebna aplikacija. Dodatne podrobnosti za prehodne objekte, kot so povezave ali slike, je treba shraniti v dodatne objekte predpomnilnika in jih povezati s prehodnimi objekti s referencami. Če se namesto močne reference uporabi šibka referenca, dodatne informacije niso vezane na referenco in jih lahko zbiralnik smeti odstrani iz predpomnilnika, ko je referenčni objekt označen kot nesposoben.

Šibki referenčni razredi so običajno na voljo v jezikih, ki jih dopolnjujejo podsistemi za zbiranje smeti, vključno z Javo, Python, Perl, C# in ogrodjem .NET. V C++ pa so programerji običajno odgovorni za čiščenje pomnilnika. Ta jezik je implementiral razred pametnega kazalca, ki zagotavlja nekatere enake funkcionalnosti, kot jih nudijo šibke reference in zbiranje smeti, kar pomaga zmanjšati puščanje pomnilnika, ki nastane zaradi nepravilnega čiščenja kazalca.

Za nadaljnje olajšanje upravljanja pomnilnika lahko jeziki z zmogljivostmi za zbiranje smeti dodatno izboljšajo funkcionalnost jezika z zagotavljanjem finejših gradientov referenc, razen močne ali šibke reference. Podatkovne vrste, kot so mehke reference in fantomske reference, so lahko vključene v te jezike, kar omogoča različne ravni obveščanja o ponovnem zajemu objektov ali prepustitvi. Programerji, ki uporabljajo jezike z avtomatiziranim zbiranjem smeti, se morajo seznaniti z vsemi referenčnimi razredi, ki so na voljo, da bi izboljšali zmogljivost aplikacije.