KiokuDB中的"弱引用"是什么?

Dav*_*d B 0 perl serialization moose kiokudb

KiokuDB教程 提到的弱引用究竟是什么?

它们与"正常"参考文献有何不同?

cjm*_*cjm 6

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

如果您有循环引用,这将非常有用.引用计数垃圾收集器(如Perl使用的)无法使用循环引用删除内容,因为它们的引用计数永远不会为0.

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

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