如果我使用类似于下面代码的节点树结构,我是否需要担心循环引用?
我读过 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 );