这与 PHP 5.3 Cli 应用程序有关,该应用程序以复杂的方式处理大量数据,需要数小时才能运行。有人发现关闭垃圾收集可以让它运行得更快(可能高达 50%)。
我遇到的唯一一篇提到这种性能影响的文章是http://derickrethans.nl/collecting-garbage-performance-considerations.html。我不确定我是否完全遵循它,但它似乎表明它仅适用于具有大量循环引用的代码。
有人可以对此有所了解吗?
另外,鉴于我们已经关闭了 gc,有没有办法手动减少内存?建议使用 unset()。一个快速测试表明,无论对象的大小如何,unset() 都释放了大约 80 个字节。这表明它只是取消了参考,我在网上阅读的内容证实了这一点。我是否认为当变量超出范围时,即使没有垃圾收集,这 80 个字节也会被释放?