如何在运行时间较长的PHP CLI脚本中禁用垃圾回收?我正在处理脚本中变量的取消设置。
取消设置变量并不会释放内存!它只是从变量中删除对应值的引用。一旦任何值的引用计数为0
,垃圾收集器将收集该值并释放其分配的内存。如果完全禁用GC,则会破坏解释器(在最好的情况下):您的内存中将有许多未引用的数据,并且永远不会被清理。这被称为“内存泄漏”。
zend.enable_gc = Off
$ php -d zend.enable_gc=0 your_script.php
或者通过ini设置:
然而,使用 unset
并不会释放内存。它���是标记变量供GC进行收集。有关详细信息,请参阅PHP手册中的Garbage Collection章节。
gc_disable
仅禁用循环,但只有一个GC。没有两个GC。 - Gordon
unset()
/GC是如何工作的?”。有人可能会看到这个问题,得出结论认为这是内存敏感应用程序的一种好方法,甚至更糟糕的是,这是某种用例。 - KingCrunch