Sobes.tech
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.