Što je brojanje referenci?

Brojanje referenci je tehnika računalnog programiranja koja se koristi za pojednostavljenje upravljanja memorijom, omogućujući računalu da odmah zna kada je “sigurno” osloboditi određenu vrijednost ili blok vrijednosti iz memorije. Prilikom programiranja, ekonomičnost je ključna, kako bi se programi mogli izvoditi na najširem mogućem rasponu računalnog hardvera. Memorija s slučajnim pristupom (RAM) je važan, ali ograničen resurs za računalo. Održavanje programskih podataka pohranjenih u RAM-u jedan je od najbržih načina da se poboljša vrijeme odziva programa, ali konzumiranje previše sistemskog RAM-a čini program velikim resursom, što je nepoželjna osobina sa stajališta krajnjeg korisnika. Brojanje referenci uravnotežuje to tako što čuva podatke u RAM-u onoliko dugo koliko je potrebno programu.

Tehnika brojanja referenci radi praćenjem broja i naziva objekata koje program koristi. Zamislite memoriju računala kao dječju sobu ispunjenu igračkama, a prostor za pohranu na tvrdom disku kao škrinju s igračkama u sobi. Brojanje referenci prati određene “igračke” (predmete) s kojima se program (dijete) igra u bilo kojem trenutku; drugim riječima, broj objekata koji se trenutno nalaze na “podu”. Čim se program prestane igrati s određenim objektom, brojanje referenci to bilježi i šalje objekt natrag u pohranu na tvrdom disku, umjesto da mu dopušta da nastavi zauzimati prostor u RAM-u.

Kada je riječ o prednostima, primarna prednost brojanja referenci dolazi iz neposrednosti. U trenutku kada program završi s objektom, on ga odlaže, oslobađajući prostor za druge objekte u programu i za druge programe na računalu. Sa stajališta krajnjeg korisnika, ovo je vrlo čist pristup; program nikada ne zauzima više memorije nego što je potrebno u bilo kojem određenom trenutku.

Loša strana ove tehnike je ekonomičnost. Kako bi brojanje referenci djelovalo učinkovito, mora koristiti uređaj za stalni nadzor za upravljanje brojem objekata koji se koriste u bilo kojem trenutku. To troši mali dio memorije i CPU kapaciteta, povećavajući opterećenje procesora od programa. Rezultat je da odluka o korištenju brojanja referenci postaje balansiranje, određujući želi li programer dodijeliti dodatni stres na CPU ili RAM.