$mm
=memory_get_usage();
//unset()后再查看当前占用内存
echo
$m
-
$mm
;
?>
这个例子,和上面的例子几乎相同,唯一的不同是,
$s
由 256 个 1 组成,即比第一个例
子多了一个 1,得到结果是:272
。这是否可以说 明,unset(
$s
)已经将
$s
所占用的内存销毁
了?
通过上面两个例子,我们可以得出以下结论:
结论一、unset()函数只能在变量值占用内存空间超过 256 字节时才会释放内存空间。
那么是不是只要变量值超过 256,使用 unset 就可以释放内存空间呢?我们再通过一个例
子来测试一下:
代码如下:
<?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
;
?>
刷新页面,我们看到第一行有 256 个 1,第二行是 0,按理说我们已经销毁了
$s
,而
$p
只
是引用
$s
的变量,应该是没有内容了,另 外,unset(
$s
)前后内存占用没变化!现在我们
再做以下的例子:
代码如下:
<?php
$s
=
str_repeat
('1',256);
//这和第二个例子完全相同
$p
=&
$s
;
$m
=memory_get_usage();
$s
=null;
//设置$s 为 null
$mm
=memory_get_usage();
echo
$p
.'<br />';
echo
$m
-
$mm
;
?>
现在刷新页面,我们看到,输出
$p
已经是没有内容了,unset()前后内存占用量之差是
272,即已经清除了变量占用的内存。本例中的
$s
=null
也 可以换成 unset(),如下: