<?php
$s = str_repeat('1',255); //产生由255个1组成的字符串
$m = memory_get_usage(); //获取当前占用内存
unset($s);
$mm = memory_get_usage(); //unset()后再查看当前占用内存
echo $m-$mm;//负数,说明没释放内存
?>
<?php
$s = str_repeat('1',256); //产生由256个1组成的字符串
$m = memory_get_usage(); //获取当前占用内存
unset($s);
$mm = memory_get_usage(); //unset()后再查看当前占用内存
echo $m-$mm;//正数,说明释放内存了
?>
<?php
$s = str_repeat('1',256); //这和第二个例子完全相同
$p = &$s;
$m = memory_get_usage();
unset($s); //销毁$s
$mm = memory_get_usage();
echo $p . '<br />';
echo $m-$mm;//负数,说明没释放内存
?>
<?php
$s = str_repeat('1', 256); //这和第二个例子完全相同
$p = &$s;
$m = memory_get_usage();
unset($s); //销毁$s
unset($p);
$mm = memory_get_usage();
echo $p . '<br />';
echo $m-$mm;;//正数,说明释放内存了
?>
unset()函数只能在变量值占用内存空间超过256字节时才会释放内存空间,并且是所有引用都unset掉才会释放内存,估计和python的引用计数一样
另外,unset一个引用变量的时候,删除的是这个引用,不会对它引用的值产生影响,unset 销毁的是指向对象的变量,而不是这个对象。