There are hundreds of instances where this is called as the iterator in a foreach loop, where Free() is not called at the end. Is this going to cause performance issues? I'm sure @Voxpire will have some insight on this!
 
Pooled Enumerables are just that, they implement the old-school way of spinning up and maintaining an object pool for performance gains, effectively recycling the same objects over and over. In the case of Pooled Enumerables, their internal List<T> storage is recycled.

Calling Free does not guarantee that the Pooled Enumerable will be added back into the pool because the pool has an upper capacity arbitrarily set to 512 IIRC.

NOT calling Free simply leaves the Pooled Enumerable instance to Garbage Collection, as does calling Free when the object pool is at maximum capacity.
 
Back