#20844 [Ver->Bgs]: "array()" doesn't free memory
| From: | derick@php.net | 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