- var_dump: documentation ( source)
- gc_collect_cycles: documentation ( source)
- memory_get_usage: documentation ( source)
- gc_enable: documentation ( source)
- range: documentation ( source)
<?php
class Collection extends ArrayObject {
protected $iterator;
public function getIterator() {
// Well, this is a heavy object to make, let's memoize it
if (!isset($this->iterator)) {
$this->iterator = new ArrayIterator($this);
}
return $this->iterator;
}
}
gc_enable();
$base = memory_get_usage();
foreach (range(1, 250000) as $i) {
$collection = new Collection(array( 'foo', 'bar' ));
foreach ($collection as $item) {
}
unset($collection);
gc_collect_cycles();
if ($i % 500 === 0) {
var_dump(memory_get_usage() - $base);
}
}