An object pool is a container having objects ready to be used. It is a software constructs that designed to optimize the use of limited resources in order to meet the demands of client requests by "pooling" objects in a container and reusing these pooled objects as needed.
When an object is activated, it is pulled from the pool. When the object is deactivated, it is placed back into the pool to await the next request. You can configure object pooling by applying the ObjectPoolingAttribute attribute to a class that derives from the System.EnterpriseServices.ServicedComponent class. The Diagnostics class provides informational properties for that can help you understand how the pool is behaving under different scenarios and load. Whenever a part of an application performance is bound to its resources, specifically creating and destroying them, Object pool can offer a significant performance boost . The MTS Glossary defines Pooling as "A performance optimization based on using collections of pre-allocated resources, such as objects or database connections."