我经常发现以下引用被用来解释PHP的
“unset()正如它的名字所说-取消设置变量。它不会强制立即释放内存。PHP的垃圾收集器将在看到适当时进行处理-故意尽快,在那些CPU周期不再需要的情况下,或者在脚本将要耗尽内存之前,以先发生的为准。如果您正在执行$whatever = null;,那么您正在重写变量的数据。您可能会更快地获得已释放/缩小的内存,但它可能会从真正需要它们的代码中更早地窃取CPU周期,导致更长的总执行时间。”
我想知道这种"低内存"和"空闲CPU周期"触发垃圾回收的C代码是如何工作的,以及在PHP 5.2.x和PHP 5.3+之间是否有区别。
所以我下载了PHP 5.2.17的C源文件,试图找到适当的代码部分。也许我只是眼瞎,或者我的C技能太低,但我未能找到这样的代码。 请问有人可以指点我正确的C文件吗?
编辑: 在寻找上述引用的示例用法时,我意识到一些奇怪的事情。 其中一些示例,例如https://dev59.com/gHRB5IYBdhLWcg3wkH9N#584982,通过使用以下URL引用php.net上的评论来引用此引用:http://us2.php.net/manual/en/function.unset.php#86347。 浏览到此URL仅显示
检查wayback机器显示,这个评论确实存在于2008年10月,但在2012年9月或之后某个时间消失了(原因不明)。
也许这引用是错误的?
还是有人可以指向正确的C文件吗?
unset()
不会立即触发"垃圾回收",而是在看到适当时才执行(重点是我的):“unset()正如它的名字所说-取消设置变量。它不会强制立即释放内存。PHP的垃圾收集器将在看到适当时进行处理-故意尽快,在那些CPU周期不再需要的情况下,或者在脚本将要耗尽内存之前,以先发生的为准。如果您正在执行$whatever = null;,那么您正在重写变量的数据。您可能会更快地获得已释放/缩小的内存,但它可能会从真正需要它们的代码中更早地窃取CPU周期,导致更长的总执行时间。”
我想知道这种"低内存"和"空闲CPU周期"触发垃圾回收的C代码是如何工作的,以及在PHP 5.2.x和PHP 5.3+之间是否有区别。
所以我下载了PHP 5.2.17的C源文件,试图找到适当的代码部分。也许我只是眼瞎,或者我的C技能太低,但我未能找到这样的代码。 请问有人可以指点我正确的C文件吗?
编辑: 在寻找上述引用的示例用法时,我意识到一些奇怪的事情。 其中一些示例,例如https://dev59.com/gHRB5IYBdhLWcg3wkH9N#584982,通过使用以下URL引用php.net上的评论来引用此引用:http://us2.php.net/manual/en/function.unset.php#86347。 浏览到此URL仅显示
unset()
手册的顶部。缺少评论#86347。检查wayback机器显示,这个评论确实存在于2008年10月,但在2012年9月或之后某个时间消失了(原因不明)。
也许这引用是错误的?
还是有人可以指向正确的C文件吗?