Adr*_*ler 2 php memory benchmarking memory-management
我正在做一些 PHP 内存基准测试,我想知道是否有一种方法可以优化垃圾收集器以减少内存消耗(因为它在其他语言中是可能的,例如 JAVA)。
我在 php.ini 中只发现了三个与 GC 相关的可自定义参数:session.gc_probability,session.gc_divisor和session.gc_maxlifetime. 这仅适用于会话,我没有对此进行基准测试。
到目前为止我知道的可能优化与代码相关,例如避免循环引用和通过调用强制垃圾收集循环gc_collect_cycles()(感谢这篇文章http://www.alexatnet.com/comment/86)。
有人知道 PHP 内存管理中的任何配置技巧或良好做法吗?
据我所知,强制收集gc_collect_cycles()是最接近在时间 t 最小化内存使用量的方法。
GC 当然是一个有时间限制的操作,并且应用程序很少受到严格的内存限制,因此在整个程序执行过程中提供不必要地触发 GC 运行的选项实际上没有意义。沿着这个思路,PHP确实提供了按需打开和关闭循环收集器的能力 ( gc_enable(), gc_disable()),这样您就可以优化代码的时间(避免 GC 决定启动的开销)——当然这很容易看到这如何有用。
一般来说,PHP 的哲学避免了诸如内存管理和 GC 之类的主题,您的基准测试可能应该尊重这一点,以获得更真实的前景。
希望这可以帮助。
(也对@GordonM 引用微优化的评论表示赞同。)