Co to jest liczenie referencji?
Zliczanie referencji to technika programowania komputerowego wykorzystywana do usprawnienia zarządzania pamięcią, pozwalająca komputerowi od razu wiedzieć, kiedy „bezpieczne” jest zwolnienie określonej wartości lub bloku wartości z pamięci. Podczas programowania kluczowa jest oszczędność, aby programy mogły być uruchamiane na możliwie najszerszym zakresie sprzętu komputerowego. Pamięć o dostępie swobodnym (RAM) jest ważnym, ale ograniczonym zasobem dla komputera. Przechowywanie danych programu przechowywanych w pamięci RAM jest jednym z najszybszych sposobów na skrócenie czasu reakcji programu, ale zużywanie zbyt dużej ilości pamięci RAM systemu powoduje, że program jest ogromną ilością zasobów, co jest niepożądaną cechą z punktu widzenia użytkownika końcowego. Liczenie referencyjne działa w celu zrównoważenia tego, utrzymując dane w pamięci RAM tak długo, jak jest to potrzebne programowi.
Technika zliczania referencji polega na śledzeniu liczby i nazw obiektów używanych przez program. Pomyśl o pamięci komputera jak o pokoju dziecięcym wypełnionym zabawkami, a o schowku na twardym dysku jak o skrzyni z zabawkami w pokoju. Liczenie referencji śledzi konkretne „zabawki” (obiekty), którymi bawi się program (dziecko) w danym momencie; innymi słowy, liczba obiektów znajdujących się obecnie na „podłodze”. Gdy tylko program przestanie grać z konkretnym obiektem, liczenie referencji to odnotowuje i wysyła obiekt z powrotem do pamięci na dysku twardym, zamiast pozwalać mu na zjadanie miejsca w pamięci RAM.
Jeśli chodzi o korzyści, podstawową zaletą liczenia referencji jest natychmiastowość. W momencie, gdy program kończy się na obiekcie, odkłada go, zwalniając miejsce na inne obiekty w programie i inne programy na komputerze. Z punktu widzenia użytkownika końcowego jest to bardzo czyste podejście; program nigdy nie zajmuje więcej pamięci niż wymaga w danym momencie.
Minusem tej techniki jest ekonomia. Aby liczenie referencji działało skutecznie, musi ono korzystać z urządzenia do ciągłego monitorowania, aby zarządzać liczbą używanych obiektów jednocześnie. To zużywa niewielką część pamięci i pojemności procesora, zwiększając obciążenie procesora z programu. W rezultacie decyzja o zastosowaniu zliczania referencji staje się działaniem równoważącym, określającym, czy programista chce przypisać dodatkowe obciążenie procesorowi lub pamięci RAM.