Co je počítání referencí?
Počítání referencí je technika programování počítače používaná k racionalizaci správy paměti, která umožňuje počítači okamžitě vědět, kdy je „bezpečné“ uvolnit určitou hodnotu nebo blok hodnot z paměti. Při programování je rozhodující ekonomika, takže programy lze spouštět na co nejširším okruhu počítačového hardwaru. Paměť s náhodným přístupem (RAM) je důležitý, ale konečný prostředek pro počítač. Udržování programových dat uložených v paměti RAM je jedním z nejrychlejších způsobů, jak zlepšit dobu odezvy programu, ale díky příliš velké systémové paměti RAM je program zdrojovým prasetem, což je nežádoucí vlastnost z pohledu koncového uživatele. Počítání referencí toto vyvažuje udržováním dat v paměti RAM tak dlouho, jak to program potřebuje.
Technika počítání referencí funguje tak, že sleduje počet a název objektů, které program používá. Myslete na paměť počítače jako dětský pokoj plný hraček a úložný prostor na pevném disku jako hrudník hraček v místnosti. Počítání referencí sleduje konkrétní „hračky“ (předměty), se kterými program (dítě) hraje kdykoli; jinými slovy, počet objektů, které jsou v současné době na "podlaze". Jakmile program přestane hrát s konkrétním objektem, počítání referencí to vezme na vědomí a odešle objekt zpět do úložiště na pevném disku, místo aby mu umožnilo pokračovat v vyčerpání místa v RAM.
Pokud jde o výhody, primární výhoda spočítání referencí pochází z bezprostřednosti. V okamžiku, kdy program skončí s objektem, odloží jej, uvolní místo pro další objekty v programu a pro další programy v počítači. Z pohledu koncového uživatele je to velmi čistý přístup; program nikdy nezabírá více paměti, než vyžaduje v určitém čase.
Nevýhodou této techniky je ekonomika. Aby počítání referencí fungovalo efektivně, musí používat trvalé monitorovací zařízení pro řízení počtu objektů, které se používají najednou. To spotřebovává malou část paměti a kapacity procesoru, čímž se zvyšuje režie procesoru z programu. Výsledkem je, že rozhodnutí o použití referenčního počítání se stává vyrovnávacím aktem, určujícím, zda programátor chce přidělit další stres CPU nebo RAM.