在 PHP 中,我的脚本运行时分配的所有内存是否都会在页面请求结束时释放,或者我需要担心随着时间推移而积累的内存泄漏?
unset()
)资源。PHP会自动执行此操作。在请求生命周期结束时,所有内容都将被释放。因此,您不需要担心这个问题。如果您这样做:<?php
$resource = allocate_heavy_resource();
?>
$resource
会在请求结束时被释放,因此这不会造成内存泄露。如果发生了内存泄漏,则意味着PHP存在严重的Bug,任何关于正常操作的讨论都将无效。
编辑: 当然也有例外情况,比如持久化数据库连接。但这些连接最终会被处理,因此这并不算是内存泄漏。
是的,在您的脚本终止后,所有内存都会被释放。但是,在您的脚本中,基于某些算法可能会发生内存泄漏。您可以使用unset()
来释放变量,但与vanneto的观点相反,它实际上不会释放内存。
在PHP中,运行我的脚本所分配的所有内存是否都会在页面请求结束时释放...?
因此,该错误不适用。 - mishmashPHP会释放通过构建对象等方式声明的内存。但仍有一些情况下内存不会被释放。因此,在5.3版本中引入了垃圾回收机制。
您可以使用gc_enable()函数来执行它。在PHP中,默认情况下不启用垃圾回收。
http://v1.srcnix.com/2010/02/10/7-tips-to-prevent-php-running-out-of-memory/
我非常确定GC会自动为您完成这项工作(它甚至会关闭打开的MySQL连接)。
memory_limit
,但这是另一回事了。 - mishmash