An object pool is a set of initialised objects that are kept ready to use. Object pooling is a way to manage access to a finite set of objects among competing clients. in other words,
object pooling is nothing but sharing of objects between different clients. Pooling basically means utilizing the resources efficiently, by limiting access of the objects to only the period the client requires it. Object pooling can offer a significant performance boost; it is most effective 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 instantiations in use at any one time is low.