我有一个命令行脚本,它通过循环运行array()
个文件,并使用文件名作为参数来调用辅助对象上的方法。
每次运行脚本时,PHP的memory_get_usage
都会报告越来越大的数字
53294264
57019624
61374624
65699176
70230600
75157152
79900392
84630472
89359264
94300016
100031176
105202448
110360808
115777528
121146976
126784824
132366952
直到我错误地用
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
很明显,某些东西正在泄漏内存,或某种全局/静态存储区域不断被添加。在PHP中调试此类错误的最佳方法是什么?有没有在PHP中无意中发生这种情况的常见情况? xDebug有一些神奇的选项可以帮助我查明这一点吗?其他工具?
我提出的最好的方法是跟随执行链并乱扔代码库并调用memory_get_usage(),直到找到确切的问题为止,但这似乎是一种乏味且低效的方法。
答案 0 :(得分:5)
看起来Facebook的xhprof提供了memory profiling at the function call level。
(我从未使用它,但我真的想...)