函数名:gc_collect_cycles()
适用版本:PHP 5 >= 5.3.0, PHP 7
用法:gc_collect_cycles() 函数用于强制执行 PHP 垃圾回收器,可以回收循环引用的对象。
示例:
class MyClass {
public $otherObj;
public function __construct() {
$this->otherObj = new OtherClass();
}
}
class OtherClass {
public $myObj;
public function __construct() {
$this->myObj = new MyClass();
}
}
$obj1 = new MyClass();
$obj2 = new MyClass();
// 将对象相互引用,形成循环引用
$obj1->otherObj->myObj = $obj2;
$obj2->otherObj->myObj = $obj1;
// 执行垃圾回收
gc_collect_cycles();
// 检查对象是否被回收
var_dump(gc_enabled()); // 输出: bool(true)
var_dump(gc_collect_cycles()); // 输出: int(2)
在上面的示例中,我们创建了两个对象 $obj1
和 $obj2
,并相互引用,形成循环引用。然后,我们调用 gc_collect_cycles()
函数来强制执行垃圾回收。最后,使用 gc_enabled()
函数检查垃圾回收是否启用,并使用 gc_collect_cycles()
函数获取回收的循环引用对象的数量。在这个例子中,输出的结果是 2
,表示成功回收了两个循环引用对象。