gpt4 book ai didi

php - PHP 的 gc_enable 函数到底做了什么?

转载 作者:IT王子 更新时间:2023-10-29 00:11:37 24 4
gpt4 key购买 nike

在你告诉我阅读手册之前,请查看 php.net documentation for this function :

Warning
This function is currently not documented; only its argument list is available.

很有帮助!

This page解释说它为循环引用启用垃圾收集。这在何时何地有用?有人可以告诉我它的使用示例吗?最好是创建并收集循环引用的示例。

最佳答案

gc_enable 仅在您调用 gc_disable 时才需要。确实没有合理的理由这样做,因为这会导致循环引用不被垃圾收集(就像 pre-5.3,当循环 GC 不存在时)。

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 中的循环收集器现在可以检测到这一点并清理这些对象。

关于php - PHP 的 gc_enable 函数到底做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4715331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com