Perl中的递归引用

时间:2011-06-23 03:26:09

标签: perl refcounting

$a=\$a;

我正在读的这本书说在这种情况下$a永远不会自由,我的问题是为什么perl解释器在编译时没有解决它?当它发现它指向自身时,不要增加引用计数。

为什么perl不这样做?

1 个答案:

答案 0 :(得分:6)

一些垃圾收集器有循环检测;出于性能和历史原因,Perl没有。如果您想要一个不影响引用计数的引用,可以使用Scalar::Util::weaken获取弱引用,这样就无需在需要依赖它的大多数情况下进行周期检测。需要在解释器中内置循环检测,以自动检测\$a是否应该是弱引用或强引用,因此您只需要明确地执行此操作。