这会导致PHP内存泄漏吗?

时间:2011-10-06 11:13:19

标签: php

这会导致PHP内存泄漏吗?

function xml_parse($xmlString)
{
    return json_decode(json_encode(new SimpleXMLElement($xmlString)), true);
}

或者我是否需要像这样取消设置SimpleXML obj?

function xml_parse($xmlString)
{
    $sObj = new SimpleXMLElement($xmlString);
    $ret  = json_decode(json_encode($sObj), true);
    unset($sObj);
    return $ret;
}

我在大型foreach中运行它,因为脚本需要解析大量文件。

3 个答案:

答案 0 :(得分:2)

如果你真的想知道,运行它几千次并输出内存使用量。通常情况下,垃圾收集器会清理未使用的对象,因此第一个代码段不会“泄漏”内存。但是,在PHP< 5.3中,循环引用存在一个问题,它可以防止收集未使用的对象。因此,如果您遇到问题,更新PHP可能会为您解决问题。

答案 1 :(得分:1)

我不是超级PHP大师,但我可能会选择你在那里的第二个例子,只是为了安全。

答案 2 :(得分:1)

它不会导致内存泄漏。 PHP的垃圾收集器将看到没有任何引用留给SimpleXMLElement并根据需要删除它。