public function foo($file1, $file2){
$obj = new Obj();
$data = array();
$data[] = $obj->importAFile($file1);
$data[] = $obj->importAFile($file2);
return $data;
}
$obj分配的内存在返回后是否被释放?
如果没有,我该如何释放它?
在一些内存耗尽警告被抛出之前,对于我来说这种方法已经行之有效,当时通过nullifying变量后再调用unset()。虽然nullification后使用unset可能是不必要的,但我还是这么做了。
gc_enable()
启用它,然后使用gc_collect_cycles()
进行垃圾回收。 - ILikeTacosPHP使用垃圾回收器。它会释放所有没有引用的变量。假设$obj->importAFile()没有返回对$obj的引用,那么内存将被释放。然而,不能保证内存何时被释放。如果$obj包含对自身的引用,在旧版本的PHP中也不会释放内存。您可以在PHP文档中了解更多信息。