2011-08-25 94 views
9
public function foo($file1, $file2){ 
    $obj = new Obj(); 

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

    return $data; 
} 

请问内存分配给$回归后的obj得到释放?如何在PHP中释放内存?

如果不是我怎样才能释放它?

+0

在PHP有垃圾收集器http://stackoverflow.com/questions/1735492/is-there-garbage-collection-in-php – stecb

回答

2

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

0

它为你管理内存。当有你的对象

2

之间的一些循环引用通过一个变量使用未设置(),你可能只有一个问题,你标记它“垃圾收集”从字面上看,作为PHP并没有真正有一个,所以内存不会立即可用。变量不再包含数据,但即使在调用unset()之后,堆栈仍保持当前大小。将变量设置为NULL会丢弃数据并几乎立即收缩堆栈内存。

这为我工作在几个场合内存耗尽的警告被调谐之前抛出,然后抵消变量调用后未设置()。在取消之后取消设置可能不是必要的,但我在取消之后仍然使用它。

+1

PHP有一个垃圾收集器。你可以用'gc_enable()'和'gc_collect_cycles()'来启用它 – ILikeTacos