#45954 [Opn->Bgs]: memory leak with unset(array)

From: Date: Sun, 31 Aug 2008 00:28:28 +0000
Subject: #45954 [Opn->Bgs]: memory leak with unset(array)
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-128567@lists.php.net to get a copy of this message
ID: 45954 Updated by: jani@php.net Reported By: mail at milianw dot de -Status: Open +Status: Bogus Bug Type: Performance problem Operating System: * PHP Version: 5.2.6 New Comment: unset() is not free(). PHP uses memory manager that does the actual garbage cleanup during request shutdown. Previous Comments: ------------------------------------------------------------------------ [2008-08-30 16:12:43] mail at milianw dot de Description: ------------ When you setup an array and unset() it afterwards, not all memory is freed. I've run the code below on various PHP versions, including 5.2.6 (via Xampp) on Linux and Windows and always get output like: startup: 64296 array setup: 13789672 unsetted array: 129284 The end value is more than twice as large as the start value. Also interestingly is that low values in the for loop [e.g. for($i = 0; $i < 1; ++$i)] result in outputs like startup: 64296 array setup: 64864 unsetted array: 64864 Could it be that unset() relies on the Garbage Collector to do the work instead of really destroying the variables? But then I find it strange that even if I put a sleep(10) after the unset I still get the same outputs for "unsetted array". Reproduce code: --------------- <?php echo "startup: ".memory_get_usage()."\n"; $array = array(); for ($i = 0; $i < 100000; ++$i) { $array[] = 'foobar'; } echo "array setup: ".memory_get_usage()."\n"; unset($array); echo "unsetted array: ".memory_get_usage()."\n"; Expected result: ---------------- My expectations would be that the value reported at the end would be nearly equal to the startup value. Additionally a call to unset() should (imo) not rely on the GC but do the deleting itself instantaneously. NOTE: I've seen http://bugs.php.net/bug.php?id=41713 which tells a similar story, but it should be fixed as far as the bug report tells. Additionally it was Windows only yet I spotted the described behaviour first on a Linux machine. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45954&edit=1

« previous php.bugs (#128567) next »