如何在PHP中释放内存


How to free memory in PHP?

public function foo($file1, $file2){
  $obj = new Obj();
  $data = array();
  $data[] = $obj->importAFile($file1);
  $data[] = $obj->importAFile($file2);
  return $data;
}

为$obj分配的内存是否在返回后被释放?

如果没有,我怎么释放它?

通过对变量使用unset(),您已经将其标记为'垃圾收集',因为PHP实际上没有垃圾收集,因此内存不能立即可用。该变量不再存放数据,但即使在调用unset()之后,堆栈仍保持当前大小。将该变量设置为NULL会立即删除数据并缩小堆栈内存。

在调优之前抛出内存耗尽警告,然后在取消变量后调用unset()的情况下,这对我来说是有效的。在无效之后调用unset可能没有必要,但我还是在无效之后使用了它。

PHP使用垃圾收集器。它释放所有没有引用的变量。假设$obj->importAFile()不返回对$obj的引用,内存将被释放。但是,不能保证何时释放内存。如果$obj包含对自身的引用,在旧版本的PHP中,内存也不会被释放。您可以在PHP文档

中阅读更多内容。

它为您管理内存。只有当对象之间有一些循环引用

时才会出现问题