PHPのメモリの使い方

unset()をしているが、メモリの消費量は変化しない。

えぇぇぇ!ということで調べてみた。

<?php
$memory_usage = memory_get_usage();
$arr = range(1,10000);
echo memory_get_usage() - $memory_usage . "\n"; // 785888
unset($arr);
echo memory_get_usage() - $memory_usage . "\n"; // 65072
?>

ちゃんと開放されてます。つか、オーバーヘッドひどいな。

<?php
$memory_usage = memory_get_usage();
$arr = range(1,10000);
echo memory_get_usage() - $memory_usage . "\n"; // 785896
$arr2 =& $arr;
echo memory_get_usage() - $memory_usage . "\n"; // 786056
unset($arr);
echo memory_get_usage() - $memory_usage . "\n"; // 786056
?>

たぶん開放されない?と思ってるのはこれのせいじゃないのでしょうか。
リファレンスとは?
>>リファレンスは、Unix ファイルシステムの ハードリンクのようなものであると考えられます。<<

<?php
$memory_usage = memory_get_usage();
$arr = range(1,10000);
echo memory_get_usage() - $memory_usage . "\n"; // 785896
$arr2 =& $arr;
echo memory_get_usage() - $memory_usage . "\n"; // 786056
$arr = null;
echo memory_get_usage() - $memory_usage . "\n"; // 65200
?>

nullっちゃうとかどうでしょう。


ついでに。

<?php
$memory_usage = memory_get_usage();
$arr = range(1,10000);
echo memory_get_usage() - $memory_usage . "\n"; // 785896
$arr2 = $arr;
echo memory_get_usage() - $memory_usage . "\n"; // 786032
count($arr2);
echo memory_get_usage() - $memory_usage . "\n"; // 786032
next($arr2);
echo memory_get_usage() - $memory_usage . "\n"; // 1331624
?>

代入した段階ではメモリ確保されないだっけ?
マニュアル見つけられず。


PHPバッチ処理書くのは他の言語に自信がない人d、うわ、何をするー。