Title: To Pool or Not To Pool? Revisiting an Old Pattern,
Abstract: We revisit the well-known object-pool design pattern in Java. In the last
decade, the pattern has attracted a lot of criticism regarding its validity
when used for light-weight objects that are only meant to hold memory rather
than any other resources (database connections, sockets etc.) and in fact,
common opinion holds that is an anti-pattern in such cases. Nevertheless, we
show through several experiments in different systems that the use of this
pattern for extremely short-lived and light-weight memory objects can in fact
significantly reduce the response time of high-performance multi-threaded
applications, especially in memory-constrained environments. In certain
multi-threaded applications where high performance is a requirement and/or
memory constraints exist, we recommend therefore that the object pool pattern
be given consideration and tested for possible run-time as well as memory
footprint improvements.