繁体   English   中英

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

[英]PHP Static class variables, inheritance, and garbage collection

我的脚本存在一些内存问题,该脚本使用通过此类继承的静态变量设置的对象。

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是否会触发垃圾回收并取消设置其实例变量,因为它也保存了对继承的静态变量的引用?

在此代码中未unset不会带来任何影响。

使用和不使用它,只要有可能,对象都会被成功收集。

将取消设置obj触发垃圾回收

不,它不会。 垃圾收集器将在合理时自动调用。

因为它还拥有对继承的静态变量的引用

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

如果您非常关心GC,并且PHP> = 5.3.0,请大致了解一下gc_collect_cycles垃圾回收

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM