The Pool Service extends the functionality of the Factory Service by adding
support for pooling objects intantiated from the given class name or
Class object reference. Pooling of objects stabilizes memory consumption and
reduces garbage collection making response times in server applications
more predictable.
When a new instance is requested from the service, it first checks its pool
if one is available. If the the pool is empty, a new object will be instantiated
from the given class. If the class is specified by its name, the request to create
an instance will be forwarded to the Factory Service.
For pooled objects implementing the Recyclable interface, a recycle method
will be called, when they are taken from the pool, and a dispose method,
when they are returned to the pool. Implementations of the methods should
clear and initialize the pooled instances correspondingly. Objects
that do not implement the interface can also be pooled, if they do not
need to perform any specific actions during pooling. A RecyclableSupport class
can be extended to get a minimal implementation of the interface.
An ArrayCtorRecyclable interface extends the Recyclable interface providing
a more efficient recycle method with less reflection for recycling frequently
used objects having constuctors with parameters.