public function foo($file1, $file2){
$obj = new Obj();
$data = array();
$data[] = $obj->importAFile($file1);
$data[] = $obj->importAFile($file2);
return $data;
}
返回后,为$ obj分配的内存是否会被释放?
如果不能,我该如何释放它?
答案 0 :(得分:2)
PHP使用garbace收集器。它释放了所有没有引用的变量。假设$ obj-> importAFile()没有返回对$ obj的引用,则将释放内存。但是,无法保证何时释放内存。如果$ obj包含对自身的引用,则在旧版本的PHP中,内存也不会被释放。您可以在PHP documentation
中阅读更多内容答案 1 :(得分:2)
通过对变量使用unset(),你已经将它标记为'垃圾收集',因为PHP实际上没有,所以内存不能立即可用。变量不再容纳数据,但即使在调用unset()之后,堆栈仍保持当前大小。将变量设置为NULL会丢弃数据并几乎立即缩小堆栈内存。
在调优之前抛出内存耗尽警告,然后在使变量无效之后调用unset(),这对我有用。在无效之后调用未设置可能没有必要,但我在无效之后仍然使用它。
答案 2 :(得分:0)
它为您管理记忆。仅当对象之间存在某些循环引用时,您可能会遇到问题