Jeśli używam struktury drzewa węzłów podobnej do poniższego kodu, czy muszę się martwić o odwołanie cykliczne?
Przeczytałem, że PHP używa mechanizmu alokacji pamięci, który może uczynić życie bardzo trudnym dla odśmiecacza, gdy są zaangażowane odwołania kołowe.Jaka jest skala okrężnego odniesienia PHP i czy powinienem się tym przejmować?
Co chcę wiedzieć:
- Jeśli moje drzewo składa się z zaledwie kilku węzłach, powiedzmy 25, jest to problem?
- Czy pamięć zostanie zwolniona na końcu skryptu, czy powoli tworzę problem dla serwera?
- W jakich okolicznościach problem ten wystąpi podczas wykonywania skryptu?
- Czy ręczne zniszczenie odnośników rozwiąże problem i czy zawsze powinienem to zrobić?
class Node {
private $parent;
private $children;
function addChild(Node $child) {
$this->children[] = $child;
$child->setParent($this);
}
function setParent($parent) {
$this->parent = $parent;
}
}
//eg
$node0 = new Node;
$node1 = new Node;
// nodes 1 and 2 have a circular reference to each other
$node0->addChild($node1);
Myślę, że powinno być dobrze. AFAIK, tak działa implementacja DOM PHP. –