Perl が参照カウント ベースのガベージ コレクションを使用していることは知っています。変数がスコープ外になると、参照カウントが減少し、REFcount が 0 になると、メモリの割り当てが解除されます。しかし、以下に示す小さな例をトレースすると、割り当て解除が行われていることがわかりませんでした。
print "start..";
sub func
{
my $length = 8*1024*1024;
my $array = [1..$length];
}
func();
print "done..";
この例では、プログラムの開始時に、Perl.exe は ~ 3 MB の物理メモリを占有します。func() 呼び出し中の割り当て後、Perl.exe は ~ 370 MB のメモリを占有します。しかし、 func() 呼び出しの後、割り当てられたメモリはガベージ コレクションされる必要があります。なぜ行われていないのですか?
返信をお待ちしております。