用于调试PHP中的内存泄漏/使用错误的工具/技术

Ala*_*orm 4 php memory memory-leaks memory-management xdebug

我有一个命令行脚本,它array()通过循环运行一个文件,并使用文件名作为参数来调用辅助对象上的方法.

每次运行脚本时,PHP memory_get_usage报告的数字越来越大

53294264
57019624
61374624
65699176
70230600
75157152
79900392
84630472
89359264
94300016
100031176
105202448
110360808
115777528
121146976
126784824
132366952
Run Code Online (Sandbox Code Playgroud)

直到我出错了

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted
Run Code Online (Sandbox Code Playgroud)

很明显,某些东西正在泄漏内存,或某种全局/静态存储区域不断被添加.在PHP中调试此类错误的最佳方法是什么?有没有在PHP中无意中发生这种情况的常见情况?xDebug有一些神奇的选项可以帮助我查明这一点吗?其他工具?

我提出的最好的方法是跟随执行链并通过调用memory_get_usage()来乱丢代码库,直到找到确切的问题,但这似乎是一种单调乏味且低效的方法.

Cha*_*les 5

看起来Facebook的xhprof 在函数调用级别提供了内存分析.

(我从未使用它,但真的想......)