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,请查看