Я знаю, что Perl использует сбор мусора на основе ссылок. Когда переменная выходит за пределы области действия, счетчик ссылок уменьшается и, если REFcount переходит в 0, память де-распределяется. Но когда я прослеживаю небольшой пример, который показан ниже, я не смог найти де-распределение событий.
print "start..";
sub func
{
my $length = 8*1024*1024;
my $array = [1..$length];
}
func();
print "done..";
В примере, когда программа запускается, Perl.exe занимает ~ 3 МБ физической памяти. После выделения во время вызова func() Perl.exe занимает ~ 370 МБ памяти. Но после вызова func() выделенная память должна быть собрана мусором. почему это не сделано?
Ждем ваших ответов.