[英]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.