与
Java不同,Perl使用引用计数进行垃圾收集.我已经尝试了一些以前提到的关于C RAII和智能指针和Java GC的问题,但是并不了解Perl如何处理循环引用问题.
任何人都可以解释Perl的垃圾收集器如何处理循环引用?有没有办法回收不再被程序使用的循环引用的内存,或者Perl完全忽略这个问题?
解决方法
根据Perl第3版编程的Perl版本,在Perl 5退出时,会出现一个“昂贵的标记和扫描”来回收循环引用.您将尽可能避免循环引用,因为否则在程序退出之前不会被回收.
Perl 5通过Scalar::Utils模块提供弱参考.
Perl 6将移植到可插入的垃圾回收方案(那么,underlying VM will have multiple garbage collection options和这些选项的行为可能会对Perl产生影响).也就是说,您可以在各种垃圾收集器之间进行选择,或者实现自己的垃圾收集器.想要一个复制收藏家?当然.想要一个着色收集器?你说对了.标记/扫描,压实等?为什么不?