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