First, you should use pooling only when you predict that the construction time for your object will be generally longer than the actual use time of the object. Second, you should use pooling if your component accesses a limited resource such as a database, mainframe, or socket connection. Pooling is a good idea for the second point because the size of a pool of objects can be limited. So, if your application has access to only 10 mainframe connections, you can configure the object pool to support only 10 instances of the component. This ensures that only 10 connections exist at any given time.
Object pooling support is needed for building large, scalable applications.