2012-03-14 186 views
0

我试图追查一个PHP程序(Magento,如果它的话)内存泄漏。基本问题似乎是随着时间的推移而增长的某个对象/类中的泄漏。也就是说,记录到数据库的信息越多,某些应用程序进程最终使用的内存就越多。 Magento是一个高度抽象的系统,因此并不总是清楚正在运行的代码是如何消耗大量内存的。这就是我想要追踪的。清除memory_get_peak_usage缓存

我一直在程序引导文件末尾使用memory_get_peak_usage来测试性能,并且在一周内从250MB的高峰使用率稳步增长到310MB的高峰使用率。我想在整个执行周期间歇地使用memory_get_peak_usage以询问

这次调用之前的峰值用法是什么? [周期后期]这次新通话之前的峰值使用量是多少?

我遇到的问题是,一旦我打电话memory_get_peak_usage一次,任何未来的调用返回相同的值作为第一个呼叫,甚至当我知道用电高峰已经改变。这使我相信,在调用memory_get_peak_usage后,PHP会缓存结果。我想解开它来执行上面列出的测试。

  1. 我可以多次拨打memory_get_peak_usage吗?

  2. 有没有其他方法来描述我上面描述的场景。 xDebug的某些功能可能?

+0

还拿在[XHProf的(http://www.google.com/search?q=xhprof)很好看,这可能会给你的资源利用更好的概述。 – Charles 2012-03-15 04:38:56

回答

1

我能叫memory_get_peak_usage多次?

不确定那一个。

是否有替代剖析我上面描述的场景。 xDebug的某些功能可能?

看看XDebug profile page。自从我介绍了一款应用以来,这已经过去了一段时间,但是当我做完这些事情之后,我继续撰写了这篇文章并且效果很好。

+0

我想你能够分析的应用程序,你有没有发现,为什么内存泄漏? – 2012-03-15 20:01:11