#20844 [Ver->Bgs]: "array()" doesn't free memory

From: Date: Fri, 06 Dec 2002 07:23:05 +0000
Subject: #20844 [Ver->Bgs]: "array()" doesn't free memory
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-26823@lists.php.net to get a copy of this message
ID: 20844 Updated by: derick@php.net Reported By: busia@tiscali.it -Status: Verified +Status: Bogus Bug Type: Scripting Engine problem Operating System: Redhat 7.0 PHP Version: 4.3.0RC2 New Comment: This is not at all a problem in PHP, but rather a UNIX behavior. While dumping the real in-use memory by PHP with help of xdebug, you see that it clearly frees the memory internally: $ php bug20884.php 35728a 38133048b 50192c 23733064d modified script: <?php xdebug_start_trace(); ini_set('memory_limit','100M'); echo xdebug_memory_usage(); echo "a\n"; $array=array(); for($i=0; $i<=500000; $i++) $array[]="pippoplu"; echo xdebug_memory_usage(); echo "b\n"; sleep(15); $array=array(); echo xdebug_memory_usage(); echo "c\n"; sleep(15); for($i=0; $i<=300000; $i++) $array[]="pippoplu"; echo xdebug_memory_usage(); echo "d\n"; sleep(15); ?> Nog a bug in PHP -> bogus Previous Comments: ------------------------------------------------------------------------ [2002-12-05 17:06:44] busia@tiscali.it I have reproduced the problem also on an ther server (this server uses redhat 7.2) ------------------------------------------------------------------------ [2002-12-05 17:01:54] busia@tiscali.it If I add the line unset($array); before $array=array(); (line: 8) the result remains the same. ------------------------------------------------------------------------ [2002-12-05 16:55:34] busia@tiscali.it If I run this script: <? ini_set('memory_limit','100M'); echo "a"; $array=array(); for($i=0; $i<=500000; $i++) $array[]="pippoplu"; echo "b\n"; sleep(15); $array=array(); echo "c\n"; sleep(15); for($i=0; $i<=300000; $i++) $array[]="pippoplu"; echo "d\n"; sleep(15); ?> and I watch the memory usage i see: after the 'echo "a"': memory usage increases and it reaches 64MB (all is ok) after the 'echo "b"': memory usage is 64MB (all is ok) after the 'echo "c"': memory usage is 62MB (not ok) after the 'echo "d"': memory usage remains 62MB (not ok) Why '$array=array();' don't free the memory used by $array? and why the memory don't increases when between ' echo "c"' and 'echo "d"'? ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=20844&edit=1

« previous php.bugs (#26823) next »