php中unset()是用来销毁变量的,但很多时候,这个函数只把变量给销毁了,内存中存放的该变量的值仍然没有销毁,也就是没能达到我们想要的释放内存的效果。这里我建议大家用 $变量=null 的方法来释放其内存
1. 该函数只有在变量值所占空间超过255字节长的时候才会释放内存
2. 只有当指向该值的所有变量(比如有引用变量指向该值)都被销毁后,地址才会被释放(也要执行1的判断)
$test = str_repeat("1",256);
$p = &$test;
$s = memory_get_usage();
// unset($test);
//$test = null;
unset($test);
$e = memory_get_usage();
echo ' 释放内存: '.($s-$e); //为0,因为还有$p引用$test之前指向的值
$test = str_repeat("1",256);
$p = &$test;
$s = memory_get_usage();
// unset($test);
$test = null;
$e = memory_get_usage();
echo ' 释放内存: '.($s-$e); //为272
$test = str_repeat("1",256);
$p = &$test;
$s = memory_get_usage();
unset($test);
unset($p);
// $test = null;
$e = memory_get_usage();
echo ' 释放内存: '.($s-$e); //272,删除了引用
http://apps.hi.baidu.com/share/detail/24020916