Re: [問題] 物件記憶體回收
※ 引述《rkcity (喵。罐頭)》之銘言:
: 有爬到一篇也是記憶體回收的文
: 結論是 perl 用 ref count 會馬上free
: 不過下面的code卻沒有馬上free
: 看來應該是我寫錯了 >_<
: 麻煩大大們抽空幫我診斷 ._./
: - - - - - - - - - - - - - - - - - - - -
: my @Array;
: while( <FILE> ){
: ...
: my $Job_obj = Job->new();
: push( @Array, $Job_obj );
: ...
: }
: undef( @Array ); # 沒有回收記憶體
: - - - - - - - - - - - - - - - - - - - -
: 也試過逐一去 undef $Array[$i] 結果也是一樣
: 照理說 undef 掉 Array 也就刪掉了物件的ref
: ref被刪,物件所佔用的記憶體空間應該要回收才是ˊˋ"
推荐使用 Devel::FindRef 來檢查還有誰 ref 到它們~
http://search.cpan.org/~mlehmann/Devel-FindRef-1.422/FindRef.pm
你可以在 undef @Array 之前,
print Devel::FindRef::track \$Array[0];
print Devel::FindRef::track \$Array[1];
...
可以看到每一個元素都有誰 ref 到.
(雖然我覺得看這個有一點辛苦.. :Q)
不過除了 $Job_obj 們可能被 ref 到以外,
也有可能是 $Job_obj 「裡面」的成員被 ref 到..
也就是 $Job_obj 的空間被釋放了, 但是它的一部分成員還在..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.246.249
推
11/05 14:56, , 1F
11/05 14:56, 1F
※ 編輯: CindyLinz 來自: 210.242.246.249 (11/05 16:11)
推
11/05 17:16, , 2F
11/05 17:16, 2F
推
11/05 22:11, , 3F
11/05 22:11, 3F
推
11/06 00:50, , 4F
11/06 00:50, 4F
→
12/20 10:48, , 5F
12/20 10:48, 5F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章