KiokuDB中的“弱引用”是什么?

时间:2010-10-25 18:40:24

标签: perl serialization moose kiokudb

KiokuDB tutorial提及的弱引用究竟是什么?

它们与“普通”参考文献有什么不同?

1 个答案:

答案 0 :(得分:6)

正常引用可防止被引用的内容被垃圾回收。弱引用类似于普通引用,但不会阻止垃圾回收。当删除对实体的最后一次正常引用时,它会被垃圾收集,并且对它的任何弱引用都会变为undef

如果您有循环引用,这将非常有用。引用计数垃圾收集器(如Perl使用的)不能删除带有循环引用的东西,因为它们的引用计数永远不会变为0。

例如,考虑树结构,其中父节点具有对其子节点的引用,子节点具有对其父节点的引用。通过使子到父引用变弱,当没有外部引用时,树将自动被垃圾收集。

在Perl中,可以使用the weaken function in Scalar::Util创建弱引用。 Moose还允许您将属性标记为weak_ref