Mój kod wygląda następująco: wykorzystanie pamięciJak zwolnić pamięć w Perlu?
my %var;
my %var_new={};
while(1){
while(my ($k,$v)=each %var){
&a_sub($v);
}
%var={}; # A
map { $var{$_}=$var_new{$_}; } keys %var_new;
%var_new={}; # B
}
sub a_sub { #....} # will fill %var_new
mój program idzie w górę iw górę.
Wydaje Perl nie wolnej pamięci na linii A i B.
Jak mogę ręcznie dokonać Perl, aby zwolnić pamięć używana %var
i %var_new
?
Dlaczego przypisujesz hashref do skrótu? – Quentin
'użyj ścisłego; używać ostrzeżeń; używaj diagnostyki "(ta ostatnia tylko w fazie rozwoju). – Quentin
Pomimo błędów w zamieszczonym przez ciebie kodzie, nie ma powodu, aby opublikowany przez ciebie kod wykorzystywał coraz więcej pamięci. – ikegami