> As Johannes already pointed out, we cannot garbage collect anonymous class definitions due to the existence of opaque references.
I still don't understand *why*, then, the memory stays flat when the new class does not happen in eval(): ``` for ($i = 0; $i < 1000000; $i++) { $object = new class {}; if ($i % 1000 == 0) { echo memory_get_usage() . "\n"; } } ``` I checked get_class() for all instances returned, **it's always the same class name whether it's called from eval() or not**, so this code should only ever create a single class in memory, right? Why the leak with eval()? > $class = get_class($obj); > $obj = new $class; Interesting. Can this behaviour be relied upon (is it documented?), or is this an implementation detail that may change at any time? Thank you, Ben