Edit report at https://bugs.php.net/bug.php?id=62468&edit=1
ID: 62468
Comment by: Sjon at hortensius dot net
Reported by: zerkyn at gmail dot com
Summary: SimpleXML memory leak, if circular references are
removed by Garbage Collector
Status: Open
Type: Bug
Package: SimpleXML related
Operating System: Windows 7, Linux
PHP Version: 5.3.14
Block user comment: N
Private report: N
New Comment:
I can confirm this, but it has already been fixed in PHP 5.4. I assume this is
because of the circular references that were fixed then.
http://3v4l.org/JICRi
Previous Comments:
------------------------------------------------------------------------
[2012-07-02 20:13:45] zerkyn at gmail dot com
Description:
------------
The SimpleXMLElement memory leaks, when:
1) An object holds reference to a SimpleXMLElement, and
2) The object is involved in a circular references net, and
3) All external references to that net are cleared, so Garbage Collector finds
that net, correctly sees it as a garbage cycle, and cleans all its objects
After the Garbage Collector finishes its work, the memory, consumed by
SimpleXMLElement is not freed, thus producing a memory leak.
The issue is reproduced both at Windows and Linux platforms.
Full version for the test script is there:
https://dl.dropbox.com/u/17950262/php/issues/simplexml_memory_leak.zip
Test script:
---------------
<?php
class SelfLinked
{
public $xml;
public $me;
public function __construct()
{
$this->xml = simplexml_load_file('pretty_big_file_of_1mb_size.xml');
$this->me = $this;
}
}
echo "Sys memory usage before: ", SystemMemoryUsage(), "\n";
for ($i = 0; $i < 1000; $i++) {
$a = new SelfLinked();
unset($a);
gc_collect_cycles();
}
echo "Sys memory usage after: ", SystemMemoryUsage(), "\n";
/** ----------------------------------------------------- */
function SystemMemoryUsage()
{
...
// Return memory consumption by executing system tool - tasklist, ps or
anything else
// See https://bugs.php.net/bug.php?id=62467 on proper memory profiling of
SimpleXML functions
}
}
Expected result:
----------------
Memory consumption does not change.
Actual result:
--------------
Huge increase of memory consumption is reported.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62468&edit=1