Hva er referansetelling?
Referansetelling er en dataprogrammeringsteknikk som brukes til å effektivisere minnestyring, slik at datamaskinen umiddelbart kan vite når den er "trygg" for å frigjøre en bestemt verdi eller blokk med verdier fra minnet. Ved programmering er økonomi avgjørende, slik at programmer kan kjøres på et bredest mulig utvalg av datamaskinvare. Random Access Memory (RAM) er en viktig, men begrenset ressurs for en datamaskin. Å holde programdata lagret i RAM er en av de raskeste måtene å forbedre responstiden til et program, men å konsumere for mye system-RAM gjør programmet til et ressursskog, en uønsket egenskap fra sluttbrukers synspunkt. Referansetelling fungerer for å balansere dette ved å holde data i RAM like lenge som det er nødvendig av programmet.
Teknikken for referansetelling fungerer ved å følge med på antall og navn på objektene programmet bruker. Tenk på datamaskinens minne som et barnerom fylt med leker, og lagringsplass på harddisken som et leksekiste i rommet. Referansetelling holder oversikt over de spesifikke "lekene" (objektene) programmet (barnet) leker med til enhver tid; med andre ord antall objekter som for øyeblikket er på "gulvet." Så snart programmet slutter å spille med et spesifikt objekt, tar referansetelling oppmerksom på dette, og sender objektet tilbake til lagring på harddisken, i stedet for å la det fortsette å spise opp plass i RAM.
Når det gjelder fordeler, kommer den primære fordelen med referansetelling fra umiddelbarhet. Øyeblikket programmet avsluttes med et objekt, fjerner det det, og frigjør plass til andre objekter i programmet og for andre programmer på datamaskinen. Fra sluttbrukers synspunkt er dette en veldig ren tilnærming; programmet tar aldri mer minne enn det krever til enhver tid.
Ulempen med denne teknikken er økonomi. For at referansetelling skal fungere effektivt, må den bruke en evigvarende overvåkningsanordning for å administrere antall gjenstander som brukes til enhver tid. Dette bruker en liten del minne og CPU-kapasitet, noe som øker prosessoren overhead fra programmet. Resultatet er at beslutningen om å bruke referansetelling blir en balansegang, avgjør om programmereren ønsker å tildele ekstra spenning til CPU eller RAM.