"Object pooling" (sometimes called "resource pooling") is a term used to describe a mechanism for reusing temporary objects, thus, reducing the number of objects that are created, optimizing instantiation time and reducing garbage collection.
During the creation process of a stateless session bean, the EJB container invokes the setSessionContext() method of the SessionBean and then calls the ejbCreate() method. If a free instance of the SessionBean is found in the container's pool, the container reuses it. If no free instance is found, one is created and added to the container's pool of stateless session beans. Because stateless session beans do not maintain client-specific state, the container can use any free instance to handle an incoming method call. When the container removes a session bean from the session bean object pool, it calls the ejbRemove() method of the bean.