以下のコードのようなノードのツリー構造を使用している場合、循環参照について心配する必要はありますか?
PHP はメモリ割り当てメカニズムを使用しており、循環参照が関係している場合、ガベージ コレクタの動作が非常に困難になる可能性があることを読みました。
私が知りたいのは:
- ツリーが少数のノード (たとえば 25 個) だけで構成されている場合、これは問題になりますか?
- メモリはスクリプトの最後に解放されますか、それともサーバーに問題を徐々に引き起こしていますか?
- この問題は、スクリプトの実行中にどのような状況で影響を及ぼしますか?
- 参照を手動で破棄すると問題は解決しますか?常にそうする必要がありますか?
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 );