Ok, to be sure, if there is now a memory leak with Recyclable components in some cases, I did a simple test case: Setting the maximum pool of a Recyclable component to 2, lookup ten instances in a row and release them.
Now, guess what happens? All ten instances get recycle() called and 8 instances get as well dispose() called.
So, although the theory is, that we can't rely on recycle() being called always, it's currently the case with ECM!
However, I think we should keep this in mind and change the code that we don't rely on this.
Then the real problem here is that the leak is coming from the fact that under heavy enough load, the HashMaps are not returning the reference to the ComponentHandler to return the component to the pool.
--
"They that give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety."
- Benjamin Franklin