public function foo($file1, $file2){
$obj = new Obj();
$data = array();
$data[] = $obj->importAFile($file1);
$data[] = $obj->importAFile($file2);
return $data;
}
請問內存分配給$迴歸後的obj得到釋放?如何在PHP中釋放內存?
如果不是我怎樣才能釋放它?
public function foo($file1, $file2){
$obj = new Obj();
$data = array();
$data[] = $obj->importAFile($file1);
$data[] = $obj->importAFile($file2);
return $data;
}
請問內存分配給$迴歸後的obj得到釋放?如何在PHP中釋放內存?
如果不是我怎樣才能釋放它?
PHP使用garbace收集器。它釋放了沒有引用剩下的所有變量。假設$ obj-> importAFile()不返回對$ obj的引用,內存將被釋放。但是,不能保證內存何時被釋放。如果$ obj包含對自身的引用,則在舊版本的PHP中,內存也不會被釋放。你可以閱讀更多PHP documentation
它爲你管理內存。當有你的對象
之間的一些循環引用通過一個變量使用未設置(),你可能只有一個問題,你標記它「垃圾收集」從字面上看,作爲PHP並沒有真正有一個,所以內存不會立即可用。變量不再包含數據,但即使在調用unset()之後,堆棧仍保持當前大小。將變量設置爲NULL會丟棄數據並幾乎立即收縮堆棧內存。
這爲我工作在幾個場合內存耗盡的警告被調諧之前拋出,然後抵消變量調用後未設置()。在取消之後取消設置可能不是必要的,但我在取消之後仍然使用它。
PHP有一個垃圾收集器。你可以用'gc_enable()'和'gc_collect_cycles()'來啓用它 – ILikeTacos
在PHP有垃圾收集器http://stackoverflow.com/questions/1735492/is-there-garbage-collection-in-php – stecb