PHP下文中不再使用的变量是否会被立即回收?
迷茫
迷茫 2017-04-10 16:04:06
[PHP讨论组]

$huge_var = "Long long string variable.....";

//使用与不使用这一句$huge_var = null;

//以下有非常多的代码,但跟$huge_var无关
//非常多的代码

//代码快要结束,此时此刻,$huge_var占用的内存回收了吗?解释器在预处理的时候有无此类优化操作?
//前面$huge_var = null的使用与否对此时此刻整个PHP脚本的内存占用量有无影响?
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
PHP中文网

很少在意这些 因为脚本执行完了什么都没了 除非是一些持久化的连接
就算释放也只是现在和一会儿的区别 又不是像java一个容器跑起来没完没了

PHP中文网

经过试验,答案是不会立即回收。

还是加上$var = null来回收内存吧,或者写成匿名变量,或者利用函数作用域。

高洛峰
//代码快要结束了,此时此刻,$huge_var占用的内存回收了吗?

明显没有啊,这个地方你还可以继续用$huge_var这个变量,不是吗?

$huge_var = null;

上面这句会把内存释放掉,如果真的是有“非常多的代码”,最好用上这句。

另外,如果$huge_var真的很大,你就该思考下,$huge_var真的是有必要的吗?
可以考虑使用PHP的“流”相关的函数。

高洛峰

在php中,一个进程开始执行,引擎会先申请一块内存,在运行中不够在再这个基础上申请。
中间如果有变量被unset或赋值null,它所占的内存会被回收,但是不会还给系统内存,依旧被引擎保留着,只有当这个进程结束,php所占的内存才会被释放掉。
因此在操作容易爆内存超出的时候,可以把这个进程分多个进程进行处理。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号