2012-01-11 50 views
0

我在跟踪文件中的以下行:了解的Xdebug内存的增量增加

0.5927 12212144 2780040.00 -> require_once(E:\web\lib\nusoap\nusoap.php) E:\web\some_path\file.php:28 

我知道需要这个文件将耗资内存2.7MB。仅仅需要文件会花费那么多是否正常?需要文件时会影响内存成本?

我还有另外13条线是需要的,每条线至少需要350,000KB的内存。我有两条线,每条线需要1MB。同样,这种事情是否正常?

编辑#1:

我开始考虑这是由于内存泄漏。我们有一个脚本,会使内存使用量增加,但当它下降时,内存将增加10MB +(ish)。

在一个点上,当阿帕奇达到使用450 MB 000,我们开始走出这样的内存不足的错误:

PHP Fatal error: Out of memory (allocated x) (tried to allocate y bytes) in/path_to/file.php(1758) on line z 
+0

低于回答您的问题请选择一个答案。我想说你不可能得到像编写XDebug的Derick更好的答案。 – hakre 2012-01-11 20:20:32

回答

1

是的。这很正常。 nusoap库非常大,但在PHP内部,它以二进制表示形式存储。你需要认识到需求本身不占用空间,而是包含的文件。

我不太明白你最后的“.00”是从哪里来的。我刚刚检查过代码,并没有创建浮点数。

欢呼声, 德里克

+0

我将跟踪文件导入到Excel中以过滤掉行,并添加了.00。 – TekiusFanatikus 2012-01-11 18:40:21

0

再次,就是这样的事情正常吗?

是的,这是正常的。如果你想了解三角洲,请查看xdebug源代码,它可以很好地解释它。首先请阅读xdebug文档,IIRC网站告诉你,你不应该把这些数字作为真实数据(并且它看起来像你在某种程度上的问题)。

另请注意,xdebug不适用于生产用途。如果您需要生产内存使用量,则需要其他工具。

+0

我试图找到内存泄漏。我认为使用这种方法是事实上的进行方式。 – TekiusFanatikus 2012-01-11 18:31:52

+0

Xdebug可以用来跟踪与内存相关的问题,但是我不会在三角洲发现问题。你可以用它来得到一个受过教育的猜测,你的内存相关问题在哪里,但是xdebug在这里取决于PHP本身提供的内容,例如PHP为包含保留了一些空间,内存可以大于包含的文件本身(内存预留可以成本高昂,所以大多数情况下程序会一次预留更多,然后随着时间消耗缓冲区)。你说什么样的内存泄漏? – hakre 2012-01-11 18:35:19

+0

查看我编辑的问题。谢谢! – TekiusFanatikus 2012-01-11 18:46:59