我怎样才能找到我的所有内存在PHP中的位置?

时间:2012-04-03 12:31:59

标签: php memory-management

我有一个脚本,可以对DB中的某些行进行大量处理(很多行)。该脚本使用了大量对象和一些内部缓存机制。

在某些时候,我正在释放所有使用过的缓存,以避免仅为缓存的项目占用所有可用的RAM,但使用的内存不会减少。

我已经使用memory_get_usage(true)来确定脚本占用了多少RAM,但我没有想法如何检测哪些对象仍然在RAM中并且仍在占用内存。

简单的解决方案是返回所有对象,并确保没有变量仍然存在并指向它们,并且所有内部缓存实际上都是免费的并且测试和测试再次测试,但我< strong>寻找工具或函数调用,它会告诉我“Z类中的变量Y有90%的RAM”,而不必知道并弄乱我使用的所有对象的内部结构这个脚本。

1 个答案:

答案 0 :(得分:2)

为什么不分析您的脚本?

在启用了分析器的情况下使用xdebug并调查cachegrind文件的内容。

在此处查看更多内容:http://www.xdebug.org/docs/profiler

更新:您可以通过将xdebug.show_mem_delta参数与xdebug.trace_format一起设置为1来获取更多与内存相关的信息,以便在简单的html中获取内存使用情况。

检查此http://xdebug.org/docs/execution_trace和此http://derickrethans.nl/xdebug-and-tracing-memory-usage.html以获得一些想法。