栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用PHP释放内存的更好方法是:unset()或$ var = null

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用PHP释放内存的更好方法是:unset()或$ var = null

在2009年未设置的手册页中提到过:

unset()
确实按照其名称所说-取消设置变量。它不会强制立即释放内存。PHP的垃圾收集器将在其认为合适的情况下进行此操作-
出于故意,因为无论如何都不需要这些CPU周期,或者直到脚本耗尽内存之前(无论哪种情况先发生)。

如果这样做,

$whatever =null;
则将重写变量的数据。您可能会更快地释放/缩小内存,但可能会从真正需要它们的代码中窃取CPU周期,从而导致更长的总体执行时间。

(自2013年以来,该

unset
手册页不再包含该部分)

请注意,直到php5.3为止,如果您有两个循环引用的对象(例如,父子关系),则在父对象上调用unset()不会释放子对象中用于父引用的内存。(当父对象被垃圾回收时,也不会释放内存。)bug33595


问题“ unset和= null之间的差异”详细说明了一些差异:


unset($a)
$a
从符号表中删除;例如:

$a = str_repeat('hello world ', 100);unset($a);var_dump($a);

输出:

Notice: Undefined variable: a in xxxNULL

但是何时

$a = null
使用:

$a = str_repeat('hello world ', 100);$a = null;var_dump($a);Outputs:NULL

似乎这

$a = null
比它的
unset()
对应对象要快一些:更新符号表条目似乎比删除它快。


  • 当您尝试使用不存在的(
    unset
    )变量时,将触发错误,并且变量表达式的值将为null。(因为,PHP还应该做什么?每个表达式都需要产生一些值。)
  • 分配了null的变量仍然是完全正常的变量。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号