php中用unset销毁变量并释放内存


Posted in PHP onMay 10, 2020

PHP的unset()函数用来清除、销毁变量,不用的变量,我们可以用unset()将它销毁。但是某些时候,用unset()却无法达到销毁变量占用的内存!

我们先看一个例子:

<?php
$s = str_repeat('1',255);  //产生由255个1组成的字符串
$m = memory_get_usage();  //获取当前占用内存
unset($s);
$mm = memory_get_usage();  //unset()后再查看当前占用内存
echo $m-$mm;
?>

最后输出unset()之前占用内存减去unset()之后占用内存,如果是正数,那么说明unset($s)已经将$s从内存中销毁(或者 说,unset()之后内存占用减少了),可是我在PHP5和windows平台下,得到的结果是:-48。

这是否可以说明,unset($s)并没有起 到销毁变量$s所占用内存的作用呢?我们再作下面的例子:

<?php
$s = str_repeat('1',256);  //产生由256个1组成的字符串
$m = memory_get_usage();  //获取当前占用内存
unset($s);
$mm = memory_get_usage();  //unset()后再查看当前占用内存
echo $m-$mm;
?>

这个例子,和上面的例子几乎相同,唯一的不同是,$s由256个1组成,即比第一个例子多了一个1,得到结果是:224。这是否可以说明,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,第二行是-48,按理说我们已经销毁了$s,而$p只是引用$s的变量,应该是没有内容了,另外,unset($s)后内存占用却比unset()前增加了!现在我们再做以下的例子:

<?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()前后内存占用量之差是224,即已经清除了变量占用的内存。本例中的$s=null也可以换成unset(),如下:

<?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;
?>

我们将$s和$p都使用unset()销毁,这时再看内存占用量之差也是224,说明这样也可以释放内存。那么,我们可以得到另外一条结论:

结论二、只有当指向该变量的所有变量(如引用变量)都被销毁后,才会释放内存。

相信经过本文的例子后,大家应该对unset()有所了解了,最起码,本人用unset()也是为了在变量不起作用时,释放内存。

内容补充

php使用unset()删除数组中某个单元

unset既可以删除变量,也可以删除数组中某个单元。但要注意的是,数组不会重建索引。

实例如下:

<?php
$arr = array("朝阳区","海淀区","西城区","东城区","丰台区");
unset($arr[3]);
echo "<pre>";
print_r($arr);
?>

输出结果如下:

Array
(
 [0] => 朝阳区
 [1] => 海淀区
 [2] => 西城区
 [4] => 丰台区
)

到此这篇关于php中用unset销毁变量并释放内存的文章就介绍到这了,更多相关php如何用unset销毁变量并释放内存内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
PHP操作数组相关函数
Feb 03 PHP
php 中英文语言转换类代码
Aug 11 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
PHP合并静态文件详解
Nov 14 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
php生成数字字母的验证码图片
Jul 14 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
PHP的Yii框架中View视图的使用进阶
Mar 29 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 PHP
php屏蔽错误及提示的方法
May 10 #PHP
php判断数组是否为空的实例方法
May 10 #PHP
通过PHP实现获取访问用户IP
May 09 #PHP
如何通过PHP实现Des加密算法代码实例
May 09 #PHP
php变量与字符串的增删改查操作示例
May 07 #PHP
PHP数组与字符串互相转换实例
May 05 #PHP
禁止直接访问php文件代码分享
May 05 #PHP
You might like
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP实现添加购物车功能
2017/03/06 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python执行等待程序直到第二天零点的方法
2015/04/23 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
linux比较文件内容的命令是什么
2015/09/23 面试题
人力资源管理专业自荐信
2014/06/24 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
HAM-2000摩机图
2021/04/22 无线电
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python