ID: 45954
Updated by: [EMAIL PROTECTED]
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