¿Por qué Perl no recolecta basura cuando se desasigna una matriz grande?

Sé que Perl utiliza recuento de referencias basado en la recolección de basura. Cuando una variable queda fuera del alcance, el recuento de referencia disminuye y si REFcount va a 0, la memoria se desasigna. Pero cuando busco un pequeño ejemplo que se muestra a continuación, no pude encontrar la desasignación que está ocurriendo.

print "start..";

sub func
{
    my $length = 8*1024*1024;
    my $array = [1..$length];

}

func();

print "done..";

En el ejemplo, cuando se inicia el programa, Perl.exe ocupa ~ 3 MB de memoria física. Después de la asignación durante la llamada a func (), Perl.exe ocupa ~ 370 MB de memoria. Pero después de la llamada a func (), la memoria asignada debe ser recogida de basura. ¿Por qué no se hace?

Esperamos sus respuestas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta