Vad är referensräkning?

Referensräkning är en datorprogrammeringsteknik som används för att effektivisera minneshanteringen, vilket gör att datorn omedelbart kan veta när det är ”säkert” att frigöra ett visst värde eller block av värden från minnet. Vid programmering är ekonomin avgörande, så att program kan köras på bredast möjliga datorhårdvara. Random Access Memory (RAM) är en viktig men ändlig resurs för en dator. Att behålla programdata lagrad i RAM-minne är ett av de snabbaste sätten att förbättra svarstiden för ett program, men att förbruka för mycket system-RAM gör programmet till en resurssvin, en oönskad egenskap ur slutanvändarens synvinkel. Referensräkning fungerar för att balansera detta genom att hålla data i RAM-minnet precis så länge som det behövs av programmet.

Tekniken för referensräkning fungerar genom att hålla reda på antalet och namnet på de objekt som programmet använder. Tänk på datorns minne som ett barnrum fyllt med leksaker och lagringsutrymme på hårddisken som en kista med leksaker i rummet. Referensräkning håller reda på de specifika ”leksaker” (objekt) som programmet (barnet) leker med vid en viss tidpunkt; med andra ord, antalet objekt som för närvarande är på ”golvet”. Så snart programmet slutar spela med ett specifikt objekt, noterar referensräkning detta och skickar objektet tillbaka till lagring på hårddisken, istället för att tillåta det att fortsätta äta upp utrymme i RAM-minnet.

När det kommer till förmåner kommer den främsta fördelen med referensräkning från omedelbarhet. I samma ögonblick som programmet avslutas med ett objekt lägger det undan det, vilket frigör utrymme för andra objekt i programmet och för andra program på datorn. Ur en slutanvändarsynpunkt är detta ett mycket rent tillvägagångssätt; programmet tar aldrig upp mer minne än vad det kräver vid någon specifik tidpunkt.

Nackdelen med denna teknik är ekonomin. För att referensräkningen ska fungera effektivt måste den använda en ständig övervakningsanordning för att hantera antalet objekt som används vid en viss tidpunkt. Detta förbrukar en liten del av minnet och CPU-kapaciteten, vilket ökar processorkostnaden från programmet. Resultatet är att beslutet att använda referensräkning blir en balansgång, som avgör om programmeraren vill allokera ytterligare stress till CPU eller RAM.