Kaj je štetje referenc?

Štetje referenc je tehnika računalniškega programiranja, ki se uporablja za poenostavitev upravljanja pomnilnika, ki omogoča računalniku, da takoj ve, kdaj je “varno” sprostiti določeno vrednost ali blok vrednosti iz pomnilnika. Pri programiranju je ključnega pomena ekonomičnost, tako da je mogoče programe izvajati na čim širšem naboru računalniške strojne opreme. Pomnilnik z naključnim dostopom (RAM) je pomemben, a omejen vir za računalnik. Ohranjanje programskih podatkov, shranjenih v RAM-u, je eden najhitrejših načinov za izboljšanje odzivnega časa programa, toda poraba prevelike količine sistemskega RAM-a povzroči, da program postane vir virov, kar je nezaželena lastnost z vidika končnega uporabnika. Štetje referenc to uravnovesi tako, da hrani podatke v RAM-u tako dolgo, kot jih potrebuje program.

Tehnika štetja referenc deluje tako, da sledi številu in imenu objektov, ki jih program uporablja. Pomislite na računalniški pomnilnik kot na otroško sobo, polno igrač, in prostor za shranjevanje na trdem disku kot skrinjico z igračami v sobi. Štetje referenc spremlja specifične »igrače« (predmete), s katerimi se program (otrok) kadar koli igra; z drugimi besedami, število predmetov, ki so trenutno na »tlu«. Takoj, ko se program neha igrati z določenim predmetom, štetje referenc to upošteva in pošlje predmet nazaj v pomnilnik na trdem disku, namesto da mu dovoli, da še naprej zaužije prostor v RAM-u.

Ko gre za koristi, glavna prednost štetja referenc izvira iz neposrednosti. Takoj, ko program konča s predmetom, ga odloži in tako sprosti prostor za druge predmete v programu in za druge programe v računalniku. Z vidika končnega uporabnika je to zelo čist pristop; program nikoli ne zavzame več pomnilnika, kot ga zahteva v določenem trenutku.

Slaba stran te tehnike je ekonomičnost. Da bi štetje referenc delovalo učinkovito, mora uporabljati napravo za stalno spremljanje za upravljanje števila objektov, ki se uporabljajo hkrati. To porabi majhen del pomnilnika in zmogljivosti CPE, kar poveča stroške procesorja iz programa. Posledica tega je, da odločitev o uporabi štetja referenc postane izravnalno dejanje, ki določa, ali želi programer dodeliti dodatno obremenitev CPU ali RAM-u.