The biggest advantage of using Object Pooling is that it
minimizes the consumption of memory and the system's resources by recycling and
re-using objects as and when it is needed and serving the request for new
objects from the pool of ready-to-be-used objects. The objects that the
application is done with (the objects are no longer needed) are sent back to
the pool rather than destroying them from the memory. According to MSDN,
"Once an application is up and running, memory utilization is affected by
the number and size of objects the system requires. Object pooling reduces the
number of allocations, and therefore the number of garbage collections,
required by an application. Pooling is quite simple: an object is reused
instead of allowing it to be reclaimed by the garbage collector. Objects are
stored in some type of list or array called the pool, and handed out to the
client on request. This is especially useful when an instance of an object is
repeatedly used, or if the object has an expensive initialization aspect to its
construction such that it's better to reuse an existing instance than to dispose
of an existing one and to create a completely new one from scratch."