Can we please not invent yet another pooling mechanism at Apache? ;-) OTOH bringing in Apache Commons Pool might be too heavy handed.
For the two main server stacks I work on at my day job, it's not an issue since I already use Commons Pool. Actually, now that I think of it: Commons DBCP (which depend on Commons Pool) is already an optional dependency for the JDBC Appender... Discuss! :-) Gary On Wed, Jan 8, 2020 at 5:17 PM Volkan Yazıcı <volkan.yaz...@gmail.com> wrote: > On Mon, Jan 6, 2020 at 7:09 PM Matt Sicker <boa...@gmail.com> wrote: > > Would it be useful to implement some sort of buffer pool for > > StringBuilders and ByteBuffers? Could likely copy code from netty's > > util library (ByteBuf et al.) or reuse stuff from commons-pool if > > needed. This would work properly in applications, servlets, and even > > reactive streams and lightweight threads later on. > > Would you mind elaborating a little bit more on the idea you have in > mind, please? To get the discussion going, I have the following draft: > > public interface ObjectPool<V> { > V acquire(); > void release(V instance); > } > > public interface ObjectPoolFactory { > // For char[], byte[], ByteBuffer, etc. (Types that cannot get > extended implicitly.) > ObjectPool<V> create(Class<V> clazz, Supplier<V> objectFactory); > // For StringBuilder, etc. (Types that can get extended > implicitly.) > ObjectPool<V> share(Class<V> clazz); > } > > One can pretty efficiently implement such an ObjectPool<V>, e.g., via > a JCTools[1] MPMC queue. Though note that object pools necessitate > manual object release, which is not the case for TLA-provided objects. > > Providing a shared object pool factory to the rest of the code base > might need a little bit more thinking. > > Exposing configuration knobs to enforce certain limits on the pool and > its factory is also a question that needs to be addressed. > > [1] https://github.com/JCTools/JCTools/ >