Почему 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 () выделенная память должна быть подвергнута сборке мусора. почему это не сделано?
Ждем ваших ответов.