我需要在 PHP 中释放对象吗?

3

之前我在iPhone开发中使用Objective-C。现在似乎需要在后端网站上做一些工作,我选择了PHP。在Objective-C中,我需要在使用对象后释放它们。在PHP中我也需要这样做吗?谢谢。

4个回答

8
99.9%的情况下,您不需要删除对象。PHP有一个垃圾收集器可以为您处理。垃圾收集器会在您的代码中不再需要某个实例时释放给定的内存。
阅读更多:

http://php.net/manual/en/features.gc.php


0

PHP使用垃圾回收而非手动内存管理。 对象在变得不可达之后的某个时刻被释放(并非像一些简化介绍所声称的那样立即释放)。这包括引用循环,因为一些版本以来(a引用b,b引用a)- 以前,它仅使用引用计数,并因此无法处理这样的循环。

当资源(文件、数据库连接等)被收集时可能会关闭,但由于收集的时间是不确定的,以及是否关闭它们取决于资源本身,因此在完成操作后仅留下它们可能是一个非常糟糕的主意。


0

0
不需要。Php有一个垃圾回收器,可以为您处理内存管理。

我非常怀疑 unset 会强制销毁。即使它触发了 GC 循环(再次强调,这非常不可能),我所知道的所有 GC 语言都不允许删除一个仍被引用的对象(除了 D 语言,其中 GC 明确是可选的),因为这将破坏 GC 有用性的 50%(没有悬空指针)。 - user395760
可能 unset() 函数不会立即释放内存,就像发送 [myObj release] 消息一样。但这是我在 PHP 中所知道的最接近 release 消息的东西。 - Luca Bernardi
问题在于,在任何纯GC语言中都没有这样的东西。甚至没有类似的东西。告诉人们这很接近它可能是有害的(他们可能会滥用它并使他们的代码难以阅读),告诉他们它确切地是那样的(就像你所做的那样)是完全错误的。 - user395760
你说得对!这样的陈述可能会让不熟悉的用户感到困惑,并且会传播不良实践。我将编辑我的答案,以避免未来的误解。 - Luca Bernardi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接