2012-11-22 71 views
1

我遇到了一些使用像這樣的繼承靜態變量設置對象的腳本的內存問題。PHP靜態類變量,繼承和垃圾回收

class a 
{ 
    public static $a = "a"; 
} 

class b extends a 
{ 
    private $instanceVar = 'hey'; 
    private $otherVar = 'you'; 

    public function DoStuff() 
    { 
     echo self::$a; 
    } 
} 

然後代碼使用的類像這樣

while(condition) 
{ 
    $obj = new b(); 
    $obj -> DoStuff(); 
    unset($obj); 
} 

我的問題是,將解封OBJ引發垃圾收集和它的實例變量的不落的,因爲它也擁有在繼承的靜態參考變量?

回答

1

unset在這段代碼中不帶任何東西。

有和沒有它的對象將成功收集時,可能的。

將解封OBJ引發垃圾收集

不是會不會。垃圾收集器將在有意義時自動調用。

,因爲它也擁有在繼承的靜態變量

它沒有一個參考。對象不保存對靜態屬性的引用。