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(视频)Http下载
Dec 12 PHP
在数据量大(超过10万)的情况下
Jan 15 PHP
PHP define函数的使用说明
Aug 27 PHP
php 常用类汇总 推荐收藏
May 13 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
php表单习惯用的正则表达式
Oct 11 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 PHP
如何使用php生成zip压缩包
Apr 21 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验证码类(分享)
2013/08/06 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
Maps Javascript
2007/01/22 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
javascript document.compatMode兼容性
2010/02/23 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
关于vue面试题汇总
2018/03/20 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
在Python下进行UDP网络编程的教程
2015/04/29 Python
学习python类方法与对象方法
2016/03/15 Python
详解python:time模块用法
2019/03/25 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
大三在校生电子商务求职信
2013/10/29 职场文书
工厂实习感言
2014/01/14 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
刘公岛导游词
2015/02/05 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
初任公务员培训心得体会
2016/01/08 职场文书