我知道 Perl 使用基于引用计数的垃圾收集。当变量超出范围时,引用计数减少,如果 REFcount 变为 0,则内存被释放。但是当我跟踪一个如下所示的小示例时,我无法找到正在发生的取消分配。
print "start..";
sub func
{
my $length = 8*1024*1024;
my $array = [1..$length];
}
func();
print "done..";
在这个例子中,当程序启动时,Perl.exe 占用了大约 3 MB 的物理内存。在 func() 调用期间分配后,Perl.exe 占用约 370 MB 内存。但是在 func() 调用之后,分配的内存应该被垃圾回收。为什么没有完成?
期待您的回复。