hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Asankha C. Perera" <asan...@adroitlogic.com>
Subject Issues with DirectByteBufferAllocator and ExpandableBuffer.expand()
Date Thu, 19 May 2011 23:33:59 GMT
Hi All

Using DirectByteBufferAllocator could cause non-heap memory to be 
allocated which the OS may find difficult to reclaim. On some JVMs this 
could even lead to a OOM and/or crash (Seen on Debian esp with 32 bit 
JDK). Using the Heap variant seems to be a solution, although it 
increases the GC overhead.

I was also looking at the ExpandableBuffer.expand() method, and was not 
able to understand why the size is increased as:
int newcapacity = (this.buffer.capacity() + 1) << 1; The default 8192 
causes the buffer to become 16386.. what is the reason behind adding 1 

I am thinking of extending the ByteBufferAllocator interface so that one 
could write an implementation that could cache and reuse buffers. e.g. a 
pre-allocated number of direct buffers and/or some heap buffers may make 
this much more optimal. Once a buffer becomes free, the same could be 
handed back to the allocator, who could then cache or discard that. Will 
this be a good idea to implement?


Asankha C. Perera
Founder and CTO, AdroitLogic, http://adroitlogic.org
VP Apache HttpComponents


To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message