自分もちょっと試してみたのでメモ
この謎の10MBは、x演算子が一時的に使ったものなんだろうか。スコープ抜けたら消えるのかなとか思って色々やってみたけど開放されず。でかいスクリプトとかだとどっかのタイミングで開放されるのかな・・・?
別な window で、watch 'ps auxwww | grep \[p\]erl' して、以下を監視してみた。VSZ とか RSS とかを見ればいいんだよね?
(ちなみに特に解決はしていないw)
三歩進んで二歩下がる
これ実行すると、$a が確保した分は undef で解放されてるっぽいんだけど、謎分が増え続ける。(タブン最終的に 60MB くらいになったっぽい。)
$ perl -e '$i = 0; $a = "." x (10*1024*1024); print "$i:add\n"; sleep 2; undef $a; print "$i:undef\n"; sleep 2; $i++; $a = "." x (10*1024*1024); print "$i:add\n"; sleep 2; undef $a; print "$i:undef\n"; sleep 2; $i++; $a = "." x (10*1024*1024); print "$i:add\n"; sleep 2; undef $a; print "$i:undef\n"; sleep 2; $i++; $a = "." x (10*1024*1024); print "$i:add\n"; sleep 2; undef $a; print "$i:undef\n"; sleep 2;'
ループ
ループで回すと謎分以外は増えないようだ。
perl -e 'foreach $i ( 1 .. 5 ) { $a = "." x (10*1024*1024); sleep 2; undef $a; print "$i\n"; sleep 2; }'