我们需要在php中释放内存吗?


Do we need to free memory in php?

我们真的需要通过创建对象来释放内存吗?还是PHP自己处理?

我在c中使用free(),在c++中使用delete

不,我们基本上不需要释放内存,因为php会在脚本结束后自动进行垃圾收集。

在PHP中,您无法实际控制内存分配。PHP在创建和销毁变量时分配和释放内存。所以:不,你不能手动释放内存,也不必这样做。

话虽这么说,你可以通过在任何时候作用域中有多少变量/这些变量持有多少数据来间接控制已使用的内存。如果您的脚本遇到内存问题,您需要优化存储的内容,以及何时何地丢弃这些变量,以便PHP可以释放相关的内存。

例如,这会占用大量内存:

$var = file_get_contents('really_large_file');

另一方面,这不会:

$fh = fopen('really_large_file', 'r');
$aFewBytes = fread($fh, 1024);

这是你在PHP中"管理内存"的方式。你决定做什么。要了解每个操作需要多少内存,您需要了解幕后发生的事情。