PHP的gc_enable功能究竟是做什么的?
2022-08-30 23:22:08
在您告诉我阅读手册之前,请查看此功能的 php.net 文档:
警告
此功能当前未记录。只有其参数列表可用。
这很有帮助!
本页说明它为循环引用启用了垃圾回收。这在何时何地有用?有人可以给我看一个使用它的例子吗?优选创建循环引用然后收集的示例。
在您告诉我阅读手册之前,请查看此功能的 php.net 文档:
警告
此功能当前未记录。只有其参数列表可用。
这很有帮助!
本页说明它为循环引用启用了垃圾回收。这在何时何地有用?有人可以给我看一个使用它的例子吗?优选创建循环引用然后收集的示例。
gc_enable
仅当您调用 时才需要。这样做确实没有合理的理由,因为这会导致循环引用不被垃圾回收(就像5.3之前,循环GC不存在一样)。gc_disable
PHP的垃圾回收器通过引用计数工作。您可以将变量视为指向对象的“指针”。当一个对象没有指向它的指针时,它是“死的”,因为没有任何东西可以到达它,所以它被垃圾回收。
//one thing points to the Foo object
$a = new Foo();
//now two things do
$b = $a;
//now only $b points to it
$a = null;
//now nothing points to Foo, so php garbage collects the object
$b = null;
不过,请考虑以下情况:
$a = new Foo();
$b = new Bar();
$b->foo = $a;
$a->bar = $b;
$a = $b = null;
在这一点上,除了物体本身之外,没有任何东西$a或$b。这是一个循环引用,在以前版本的php(<5.3)中,不会被收集。5.3 中的循环收集器现在可以检测到这一点并清理这些对象。