|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-12-05 16:55 UTC] busia at tiscali dot 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"'?
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Dec 20 08:00:02 2025 UTC |
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