小编its*_*eee的帖子

PHP的'unset'构造如何在内部工作?

前言:我确实知道'unset'在userland中是如何工作的,但我想知道它是如何在内部工作的.

当在zval结构上调用unset时,它会减少引用计数器(refcount__gc).当refcount__gc达到0时,该变量不再使用,可以删除.问题是它是否总是立即完成,或者在某些情况下它可以在以后由垃圾收集器完成?

我发现了两个相互矛盾的陈述:

unset()正如它的名字所说 - 取消设置一个变量.它不会强制立即释放内存.PHP的垃圾收集器会在看到拟合时执行它 - 尽快意图,因为无论如何都不需要那些CPU周期,或者在脚本耗尽内存之前,无论先发生什么.- Stackoverflow回答提到2009 php.net文档

相反的是:

当refcount达到零时,zval被销毁,它所持有的任何内存现在都是免费的 - 更好地理解PHP的垃圾收集,2012年文章

那么哪一个是正确的,比如PHP 5.3和PHP 5.5?如果可能,也许您可​​以提供PHP源代码中未设置定义的链接.谢谢!

php garbage-collection unset

5
推荐指数
1
解决办法
250
查看次数

标签 统计

garbage-collection ×1

php ×1

unset ×1