1

我在使用这样的继承静态变量设置的对象的脚本时遇到了一些内存问题。

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

4

2 回答 2

2

unset在这段代码中没有带来任何东西。

无论有没有它,只要有可能,对象都会被成功收集。

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

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

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

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

于 2012-11-22T02:55:40.447 回答
-1

如果您非常关心 GC 并且 PHP >= 5.3.0,请查看 gc_collect_cycles和一般的垃圾收集

于 2012-11-22T06:41:40.263 回答