{site_name}

{site_name}

🌜 搜索

在 PHP 中,gc_collect_cycles() 函数用于强制执行垃圾回收,回收循环引用的对象

php 𝄐 0
php gc_collect_cycles
在 PHP 中,gc_collect_cycles() 函数用于强制执行垃圾回收,回收循环引用的对象。当一个对象和其他对象相互引用形成循环时,PHP 的垃圾回收器无法自动回收这些对象,因此需要使用 gc_collect_cycles() 手动触发垃圾回收。

以下是示例代码,演示如何使用 gc_collect_cycles():

php
class MyClass {
public $otherObj;
}

$object1 = new MyClass();
$object2 = new MyClass();

// 创建循环引用
$object1->otherObj = $object2;
$object2->otherObj = $object1;

// 删除对两个对象的引用
unset($object1, $object2);

// 垃圾回收前的内存使用情况
echo 'Before garbage collection: ' . memory_get_usage() . ' bytes' . PHP_EOL;

// 强制执行垃圾回收
gc_collect_cycles();

// 垃圾回收后的内存使用情况
echo 'After garbage collection: ' . memory_get_usage() . ' bytes' . PHP_EOL;


在上述示例中,两个 MyClass 对象形成了循环引用,导致垃圾回收器无法自动回收它们。通过调用 gc_collect_cycles() 函数,我们可以手动触发垃圾回收。在示例中,我们通过 unset() 删除了对两个对象的引用,然后调用 gc_collect_cycles() 函数执行垃圾回收操作。最后,通过 memory_get_usage() 函数获取内存使用情况并输出结果。