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

我需要在php中释放对象吗?,php,object,memory-management,programming-languages,Php,Object,Memory Management,Programming Languages,之前我在iPhone开发中使用过Objective-C。似乎我需要在后端站点做一些工作,我选择了PHP。在Objective-C中,我需要在使用对象后释放它们。我是否也需要在PHP中执行此操作?谢谢。99.9%的情况下,不需要删除对象。PHP有一个垃圾收集器,可以为您处理这个问题。一旦代码中不再需要某个给定的内存实例,垃圾收集器将释放该实例 欲了解更多信息: 不是为了内存,PHP使用垃圾收集。对象在您的代码无法访问后的某个时刻被释放(而不是像一些简化的介绍所说的那样立即释放)。这包括引用循环,因

之前我在iPhone开发中使用过Objective-C。似乎我需要在后端站点做一些工作,我选择了PHP。在Objective-C中,我需要在使用对象后释放它们。我是否也需要在PHP中执行此操作?谢谢。

99.9%的情况下,不需要删除对象。PHP有一个垃圾收集器,可以为您处理这个问题。一旦代码中不再需要某个给定的内存实例,垃圾收集器将释放该实例

欲了解更多信息:


不是为了内存,PHP使用垃圾收集。对象在您的代码无法访问后的某个时刻被释放(而不是像一些简化的介绍所说的那样立即释放)。这包括引用循环,因为有几个版本(a引用b,b引用a)-以前,它只使用引用计数,因此在此类循环中失败


资源(文件、数据库连接等)在收集时可能会关闭,但由于收集时间不确定,是否关闭取决于相关资源,当您处理完它们后,离开它们可能是一个非常糟糕的主意。

除了持久的数据库连接之外,您不需要


不,你没有!Php有一个专门为您处理内存的工具。

我非常怀疑
unset
是否会强制销毁。即使它触发了一个GC循环(同样,非常不可能),我所知道的任何GC的d语言都不允许(除了d,其中GC是显式可选的)在对象仍然被引用时删除对象,因为这会破坏50%的GC有用的东西(没有悬空指针)。可能unset()不会立即释放内存,因为它会发送一个[myObj release]消息但这是我所知道的最接近于在php中发布消息的事情,在任何纯GC语言中都不存在这样的事情。甚至都没有接近的东西。告诉人们这是接近它可能是有害的(他们可能会垃圾邮件,使他们的代码不可读),告诉他们这是完全错误的(就像你做的那样)。你是对的!做出这样的声明可能会让不熟悉的用户感到困惑,并可能传播不良行为。我将编辑我的答案以避免将来的误解