$huge_var = "Long long string variable.....";
//使用与不使用这一句$huge_var = null;
//以下有非常多的代码,但跟$huge_var无关
//非常多的代码
//代码快要结束,此时此刻,$huge_var占用的内存回收了吗?解释器在预处理的时候有无此类优化操作?
//前面$huge_var = null的使用与否对此时此刻整个PHP脚本的内存占用量有无影响?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
很少在意这些 因为脚本执行完了什么都没了 除非是一些持久化的连接
就算释放也只是现在和一会儿的区别 又不是像java一个容器跑起来没完没了
经过试验,答案是不会立即回收。
还是加上$var = null来回收内存吧,或者写成匿名变量,或者利用函数作用域。
明显没有啊,这个地方你还可以继续用$huge_var这个变量,不是吗?
上面这句会把内存释放掉,如果真的是有“非常多的代码”,最好用上这句。
另外,如果$huge_var真的很大,你就该思考下,$huge_var真的是有必要的吗?
可以考虑使用PHP的“流”相关的函数。
在php中,一个进程开始执行,引擎会先申请一块内存,在运行中不够在再这个基础上申请。
中间如果有变量被unset或赋值null,它所占的内存会被回收,但是不会还给系统内存,依旧被引擎保留着,只有当这个进程结束,php所占的内存才会被释放掉。
因此在操作容易爆内存超出的时候,可以把这个进程分多个进程进行处理。