我在脚本中遇到了一些内存问题,该脚本使用的对象设置了这样的继承静态变量。
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触发垃圾收集和取消设置实例变量,因为它还包含对继承的静态变量的引用?
答案 0 :(得分:1)
unset
在此代码中没有带来任何内容。
无论有没有,都可以在可能的情况下成功收集对象。
将取消设置obj触发器垃圾收集
不是不会。垃圾收集器会在有意义时自动调用。
因为它还包含对继承的静态变量的引用
没有。对象不包含对静态属性的引用。
答案 1 :(得分:-1)
如果您非常关心GC并且让PHP> = 5.3.0一般看看 gc_collect_cycles和garbage collection