我在perl中遇到了一個處理內存的奇怪問題。 我正在使用相當大的散列結構的perl應用程序中工作。我正在分配具有來回的對象。但最後,即使我正在釋放對象和散列,內存使用情況仍然保持不變。perl中的內存管理
這是問題的一個樣本:
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
我覺得我做了一些非常基本的錯誤。任何人都可以建議嗎?
發生在物體的情況下會發生什麼?當一個對象超出範圍時,析構函數被調用。這是否仍然保持對象中定義的詞彙變量的記憶? – Kallol
@Kallol,這種情況與超出範圍的正常變量沒有什麼不同,除了可以對對象執行一些自定義清理。內存*將*免費供Perl使用,但Perl仍然不會將其返回給系統。 – dan1111
可以做什麼樣的客戶清理? – Kallol