了解Xdebug内存增量的增加


Understanding Xdebug memory delta increase

我的跟踪文件中有以下行:

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

我知道需要这个文件将花费2.7MB的内存。仅仅需要文件就要花那么多钱,这正常吗?当需要文件时,什么会影响内存成本?

我还有另外13行是必需的,每行至少需要35万KB的内存。我还有两条线路,每条线路的成本为1MB。再说一遍,这种事情正常吗?

编辑#1:

由于内存泄漏,我开始对此进行调查。我们有一个脚本,它的内存使用率会飙升,但当它下降时,RAM会增加10MB+(ish)。

有一次,当Apache的使用量达到45万MB时,我们开始出现内存不足的错误,比如:

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

是。这很正常。nusoap库相当大,但在PHP内部,它被存储为一个放大的二进制表示。您需要意识到需求本身并没有占用空间,而是占用了包含的文件。

不过,我不太明白你结尾的".00"是从哪里来的。我刚刚检查了代码,它没有创建浮点数字。

欢呼,衍生

再说一遍,这种事情正常吗?

是的,这很正常。如果您想了解delta,请查看xdebug源代码,它可以很好地解释它。此外,请先阅读xdebug文档,IIRC网站告诉您不应该将这些数字视为真实数字(在您的问题中,您似乎以某种方式这样做了)。

还要注意xdebug不是用于生产的。如果您需要使用生产内存,则需要其他工具。