Edit report at http://bugs.php.net/bug.php?id=54120&edit=1
ID: 54120 Updated by: rricha...@php.net Reported by: ikaos at gmx dot fr Summary: Impossible to freed memory complety after call to Xpath() method. -Status: Open +Status: Bogus Type: Bug Package: SimpleXML related Operating System: Linux CentOS 5.5 x86_64 PHP Version: 5.3.5 Block user comment: N Private report: N New Comment: Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Memory is freed. http://xmlsoft.org/xmlmem.html you can read how memory is managed and might not be returned immediately to the kernel. Previous Comments: ------------------------------------------------------------------------ [2011-02-28 15:58:00] ikaos at gmx dot fr Description: ------------ --- >From manual page: http://www.php.net/simplexmlelement.xpath --- Test script: --------------- <?php $sxe = NULL; $nodes = NULL; print("Without call to xpath method : " . PHP_EOL); print("Memory before SXE : " . memory_get_usage() . PHP_EOL); $sxe = new SimpleXMLElement("large_file.xml", 0, TRUE); $sxe = NULL; $nodes = NULL; print("Memory after freed memory : " . memory_get_usage() . PHP_EOL . PHP_EOL); $sxe = NULL; $nodes = NULL; print("Calling xpath method : " . PHP_EOL); print("Memory before SXE : " . memory_get_usage() . PHP_EOL); $sxe = new SimpleXMLElement("large_file.xml", 0, TRUE); $nodes = $sxe->xpath('/ITEMS/ITEM'); $sxe = NULL; $nodes = NULL; print("Memory after freed memory : " . memory_get_usage() . PHP_EOL . PHP_EOL); // short sleep, time to launch 'ps aux' sleep(10); ?> Expected result: ---------------- When I unset (or set to NULL) the result of the Xpath() method ($nodes in the example), I expect memory will be completly freed. It's not the case. I tried, to recursively unset each element from $nodes and I got the same result. Actual result: -------------- Result of the test script : Without call to xpath method : Memory before SXE : 625736 Memory after freed memory : 625904 Calling xpath method : Memory before SXE : 625904 Memory after freed memory : 1608944 memory_get_usage says that few kilos octets of memory are still used, but in reality several thousand mega octets are still used. # ps aux | grep test.php me 28859 83.4 48.3 *1119908* *996056* pts/3 S+ 15:30 0:08 /bin/php test.php ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=54120&edit=1