php请求结束时是否释放所有内存?

时间:2013-01-21 08:56:35

标签: php memory-management memory-leaks

在php中是分配用于运行我的页面请求结束时发布的脚本的所有内存,还是我需要担心随着时间的推移会出现内存泄漏?

5 个答案:

答案 0 :(得分:4)

没有。您无需手动释放(调用unset())资源。 PHP会自动执行此操作。在请求生命周期结束时,所有内容都会被释放。所以不,你需要打扰这个。如果你这样做:

<?php
$resource = allocate_heavy_resource();
?>

$resource将在请求结束时释放,因此泄漏内存。如果确实如此,那就意味着PHP中存在严重错误,无论如何都会通过窗口进行正常操作的讨论。

编辑: 当然也有例外。像持久数据库连接。但最终会得到处理,所以它不是memory leak

答案 1 :(得分:1)

是的,脚本终止后会释放所有内存。但是,基于某些算法,脚本可能会发生内存泄漏。您可以使用unset()释放变量,但与vanneto的观点相反,它将not actually free up the memory

答案 2 :(得分:1)

PHP会释放您通过构建对象等声明的内存。仍然存在未释放内存的情况。为此,在5.3版本中引入了垃圾收集原理。

您可以使用gc_enable()函数来执行它。默认情况下,PHP中的垃圾收集不活动。

答案 3 :(得分:1)

种类,缓存内容时会发生内存泄漏。因此,如果你的php脚本中有内存泄漏,你的apache进程会随着时间的推移而增加,你可以在这么多请求之后重启它们。检查您的多处理模块(MPM)通常是prefork或worker。

除非你用PHP进行大量处理,否则大多数情况虽然不会对你产生影响

答案 4 :(得分:0)