Test One:
class Entity { }
$entities = array();
echo "START: ". number_format(memory_get_usage()) . "\n";
for($i = 0; $i < 100000; ++$i)
{
$entities[] = new Entity();
}
echo "BEFORE UNSET: ". number_format(memory_get_usage()) . "\n";
unset($entities);
echo "AFTER UNSET: ". number_format(memory_get_usage()) . "\n";
Output:
START: 631,664
BEFORE UNSET:44,404,904
AFTER UNSET: 8,954,568
Test Two:
class Entity { }
$entities = array();
echo "START: ". number_format(memory_get_usage()) . "\n";
for($i = 0; $i < 100000; ++$i)
{
$entity = new Entity();
$entities[] = &$entity;
}
echo "BEFORE UNSET: ". number_format(memory_get_usage()) . "\n";
unset($entities);
echo "AFTER UNSET: ". number_format(memory_get_usage()) . "\n";
Output:
START: 631,664
BEFORE UNSET: 10,480,480
AFTER UNSET: 631,752
After i had trouble with memory limit, I played around with it a bit...
So after that i wonder how does garbage collection really work:
- Why does test one need more memory than test two?
- Why does php keep memory after unsetting the array in test one?
thx dave