Mam do czynienia z dziwnym problemem obsługi pamięci w Perlu. Pracuję w aplikacji perl, która używa dość dużych struktur mieszających. Przydzielam obiektom ref i in. Ale na końcu wydaje się, że nawet jeśli zwolniam obiekt i hash, użycie pamięci pozostaje takie samo.Zarządzanie pamięcią w perlu
Oto przykład problemu:
my $hash = {};
.............
this ds gets populated with a lot of data ...
.......
{
my $obj = new Class("data"=>$hash);
.......
.......
......
}
#even undefing the $hash
undef $hash;
# I can expect some improvement in Memory Utilization, but its not happening
myślę, robię kilka bardzo podstawowych błędów. Czy ktoś może zasugerować?
Co dzieje się w przypadku obiektów? Gdy obiekt wykracza poza zakres, destruktor zostaje wywołany. Czy to nadal będzie zawierało pamięć zmiennych leksykalnych zdefiniowanych w obiekcie? – Kallol
@Kallol, ten przypadek nie różni się od normalnej zmiennej wychodzącej poza zakres, z wyjątkiem tego, że możesz wykonać niestandardowe czyszczenie swojego obiektu. Pamięć * będzie * wolna, aby Perl mógł używać czegoś innego, ale Perl nadal nie odda jej z powrotem do systemu. – dan1111
jaki rodzaj czyszczenia custome można zrobić? – Kallol