PHP静态类变量、继承和垃圾收集

PHP静态类变量、继承和垃圾收集,php,memory,inheritance,static,Php,Memory,Inheritance,Static,我的一个脚本遇到了一些内存问题,它使用的对象是用继承的静态变量设置的,就像这样 class a { public static $a = "a"; } class b extends a { private $instanceVar = 'hey'; private $otherVar = 'you'; public function DoStuff() { echo self::$a; } } 然后是使用如下类的代码 whi

我的一个脚本遇到了一些内存问题,它使用的对象是用继承的静态变量设置的,就像这样

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是否会触发垃圾收集及其实例变量的取消设置,因为它还包含对继承的静态变量的引用?

此代码中的取消设置不会带来任何结果

无论是否使用,只要有可能,都将成功收集对象

取消设置obj是否会触发垃圾回收

不,不会的。垃圾收集器将在有意义时自动调用

因为它还保存对继承的静态变量的引用


没有。对象不包含对静态属性的引用。

如果您非常关心GC,并且PHP>=5.3.0,请查看