PHP中有垃圾收集吗?

Posted

技术标签:

【中文标题】PHP中有垃圾收集吗?【英文标题】:Is there garbage collection in PHP? 【发布时间】:2010-12-16 16:03:37 【问题描述】:

我知道在 php 中您不必释放内存。 垃圾收集器是否到达?

【问题讨论】:

【参考方案1】:

是的,here 是一篇很好的文章,描述了它的陷阱。在 PHP > 5.3.0 中,还有gc_enable 函数。

【讨论】:

该文章中未包含的一个问题是匿名函数,它是使用 create_function() 创建的。 These are not subject to garbage collection. @Dave Lancea 很好的观察。不过我只想指出,您的链接指向 2007 年发表的评论,因此 2017 年可能不再是这样(但也许是这样,我找不到有关该主题的更多信息)。【参考方案2】:

PHP 结合了垃圾收集和引用计数。后者是管理内存的主要模式,垃圾收集器会拾取 ref 计数器遗漏的部分(循环引用)。在 5.3 之前,php 只有引用计数,即使在 5.3 中,它仍然是通常释放内存的方式。

【讨论】:

【参考方案3】:

是的。垃圾收集器还会进行会话清理。

【讨论】:

【参考方案4】:

从 5.3.0 开始支持垃圾回收。请查看来自 php.net http://php.net/manual/en/features.gc.php 的这篇内容丰富的文章

【讨论】:

【参考方案5】:

从 5.3.0 开始,您可以使用 gc_collect_cycles function 强制进行垃圾回收。

【讨论】:

以上是关于PHP中有垃圾收集吗?的主要内容,如果未能解决你的问题,请参考以下文章

fortran 有垃圾收集器(gc)吗?

PHP 生成器 - 垃圾收集

为啥 PHP 的垃圾收集器会降低性能,没有它如何管理内存?

PHP垃圾收集澄清

JVM之垃圾收集器

面试官:你对JVM垃圾收集器了解吗?13连问你是否抗的住!