【问题标题】:How do I use xdebug to find a php memory leak?如何使用 xdebug 查找 php 内存泄漏?
【发布时间】:2016-03-28 16:22:43
【问题描述】:

我在这里苦苦挣扎,可能是因为我(还)不是 php 专家,而且在 linux 管理方面确实有点欠缺,但正在学习。我一直在寻找有关如何找到我的代码肯定存在的内存泄漏的文档,并且很多文章都建议使用 xdebug。我安装了它,短暂地打开了日志记录并使用 tracefile-analyser.php 转储了以下报告。我现在遇到的问题是在跟踪文件脚本上找到适当的文档来解释每列的含义。有人可以直接指出“如果您看到 X,这意味着它是内存泄漏”类型的文档,或者解释我如何在以下输出中找到函数调用泄漏内存?

http://hully.net/ML.jpg

【问题讨论】:

  • 这很奇怪。通常人们不会担心 php 脚本中的“内存泄漏”,因为这样的脚本只有非常有限的生命周期。另一件事是 php 引擎本身的潜在内存泄漏!但这是您无法使用xdebug 之类的工具追踪的内容,您将不得不使用ddd 之类的经典工具并检查php 引擎的本地构建。
  • 您需要添加一些可用于查看您的问题的代码。看看这里的答案以获得想法......stackoverflow.com/questions/849549/…
  • 令人沮丧;甚至那篇文章也建议使用 xdebug,但我终其一生都无法弄清楚报告中各列之间的区别以及问题出在哪里。有谁知道这两个内存列的区别吗?

标签: php memory-leaks xdebug


【解决方案1】:

基于the documentation,如果xdebug设置为捕获机器可读格式的跟踪信息,它会记录程序开始一个函数时正在使用的内存量,然后是程序退出时正在使用的内存量功能。

我不确定您使用什么程序来解析跟踪文件,但我猜他们在第一列中显示您的程序的总内存使用量,在第二列中显示个人有多少内存功能用途。

如果您已经以机器可读格式提取跟踪(xdebug.trace_format = 1 在您的 php.ini 中),您可能想尝试Xdebug Trace Tree 来查看结果。它显示了一个专门用于内存使用变化的列。

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 2012-02-27
    • 2011-07-05
    • 2017-12-30
    • 2018-05-31
    • 2019-08-20
    • 2014-03-26
    相关资源
    最近更新 更多