Junior — Middle
Jak se chová mechanismus automatického řízení paměti, pokud objekt obsahuje odkaz na sebe sama?
sobes.tech AI
Odpověď od AI
V C#, mechanismus automatického řízení paměti (Garbage Collector, GC) je založen na počítání dostupnosti objektů z kořenových odkazů.
Pokud objekt obsahuje odkaz na sebe sama (auto-odkaz), nebrání to sběrači odpadků uvolnit paměť, pokud na tento objekt neexistují žádné externí odkazy. GC analyzuje graf objektů, počínaje kořenovými odkazy, a označuje všechny dostupné objekty. Objekty, které jsou dostupné pouze přes cyklické odkazy (včetně auto-odkazů), ale nejsou dostupné z kořenů, jsou považovány za nedostupné a jsou sbírány.
Tedy auto-odkaz nebrání sběru objektu, pokud není v programu používán.
Příklad:
class Node {
public Node SelfReference;
}
var node = new Node();
node.SelfReference = node;
// Pokud po tom již není node používán a neexistují na něj jiné odkazy,
// GC uvolní paměť, navzdory auto-odkazu.