我知道 Perl 使用基于引用计数的垃圾回收机制。当一个变量超出作用域时,引用计数会减少,如果引用计数变为0,则内存被释放。 但是当我跟踪下面显示的一个小示例时,我无法找到内存释放的情况。
print "start..";
sub func
{
my $length = 8*1024*1024;
my $array = [1..$length];
}
func();
print "done..";
在这个例子中,当程序启动时,Perl.exe 占用大约 3MB 物理内存。 在 func() 调用期间进行分配后,Perl.exe 占用大约 370MB 内存。 但是,在 func() 调用之后,分配的内存应该被垃圾回收。为什么没有这样做呢?
期待您的回复。