Dav*_*d B 0 perl serialization moose kiokudb
KiokuDB教程 提到的弱引用究竟是什么?
它们与"正常"参考文献有何不同?
正常引用可防止被引用的东西被垃圾收集.弱引用类似于普通引用,但不会阻止垃圾回收.当删除对实体的最后一次正常引用时,它会被垃圾收集,并且对它的任何弱引用都会变为undef.
如果您有循环引用,这将非常有用.引用计数垃圾收集器(如Perl使用的)无法使用循环引用删除内容,因为它们的引用计数永远不会为0.
例如,考虑一个树结构,其中父节点具有对其子节点的引用,子节点具有对其父节点的引用.通过使子到父引用变弱,当没有外部引用时,树将自动进行垃圾回收.
在Perl中,可以使用Scalar :: Util中的weaken函数创建弱引用. Moose还允许您将属性标记为weak_ref.