Почему Perl не собирает мусор памяти, когда большой массив освобождается?

Я знаю, что 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 () выделенная память должна быть подвергнута сборке мусора. почему это не сделано?

Ждем ваших ответов.

Ответы на вопрос(2)

Ваш ответ на вопрос