PHP静态类变量,继承和垃圾回收

时间:2012-11-22 02:51:42

标签: 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;
    }
}

然后使用类似

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

我的问题是,是否会取消设置obj触发垃圾收集和取消设置实例变量,因为它还包含对继承的静态变量的引用?

2 个答案:

答案 0 :(得分:1)

unset在此代码中没有带来任何内容。

无论有没有,都可以在可能的情况下成功收集对象。

  

将取消设置obj触发器垃圾收集

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

  

因为它还包含对继承的静态变量的引用

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

答案 1 :(得分:-1)

如果您非常关心GC并且让PHP> = 5.3.0一般看看 gc_collect_cyclesgarbage collection