如何在PHP中释放内存?

时间:2011-08-25 11:09:01

标签: php memory object

public function foo($file1, $file2){
  $obj = new Obj();

  $data = array();
  $data[] = $obj->importAFile($file1);
  $data[] = $obj->importAFile($file2);

  return $data;
}

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

如果不能,我该如何释放它?

3 个答案:

答案 0 :(得分:2)

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

中阅读更多内容

答案 1 :(得分:2)

通过对变量使用unset(),你已经将它标记为'垃圾收集',因为PHP实际上没有,所以内存不能立即可用。变量不再容纳数据,但即使在调用unset()之后,堆栈仍保持当前大小。将变量设置为NULL会丢弃数据并几乎立即缩小堆栈内存。

在调优之前抛出内存耗尽警告,然后在使变量无效之后调用unset(),这对我有用。在无效之后调用未设置可能没有必要,但我在无效之后仍然使用它。

答案 2 :(得分:0)

它为您管理记忆。仅当对象之间存在某些循环引用时,您可能会遇到问题