In my application I see most of the memory used by hibernate is on QueryImpl class and the query retrieves data from sample employee class. I use getResultSet to retrieve the resultset. When there is concurrent request, the allocation increases without releasing the memory though request is completed. Let me know if any thoughts to free up memory. The instance count displayed here is on concurrent execution of 5 requests.