Object pool pattern ||This article has an unclear citation
style. (March 2012)| The object pool pattern is a software
creational design pattern that uses a set of initialized objects
kept ready to use, rather than allocating and destroying them on
demand. A client of the pool will request an object from the
pool and perform operations on the returned object. When the
client has finished, it returns the object, which is a specific
type of factory object, to the pool rather than destroying it.
Object pooling can offer a significant performance boost in
situations where the cost of initializing a class instance is
high, the rate of instantiation of a class is high, and the
number of instances in use at any one time is low. The pooled
object is obtained in predictable time when creation of the new
objects (especially over network) may take variable time.
However these benefits are mostly true for objects that are
expensive with respect to time, such as database connections,
socket connections, threads and large g