@Override public void release(ByteBuffer buffer) { if (buffer == null) return; // nothing to do // validate that this buffer is from this pool assert((buffer.capacity() % _factor) == 0); int b = bucketFor(buffer.capacity()); ConcurrentMap<Integer, Bucket> buckets = bucketsFor(buffer.isDirect()); Bucket bucket = buckets.computeIfAbsent(b,_newBucket); bucket.release(buffer); }
@Override public void release(ByteBuffer buffer) { if (buffer == null) return; // nothing to do // validate that this buffer is from this pool assert((buffer.capacity() % _factor) == 0); int b = bucketFor(buffer.capacity()); ConcurrentMap<Integer, Bucket> buckets = bucketsFor(buffer.isDirect()); Bucket bucket = buckets.computeIfAbsent(b,_newBucket); bucket.release(buffer); }
@Override public void release(ByteBuffer buffer) { if (buffer == null) return; // nothing to do // validate that this buffer is from this pool assert((buffer.capacity() % _factor) == 0); int b = bucketFor(buffer.capacity()); ConcurrentMap<Integer, Bucket> buckets = bucketsFor(buffer.isDirect()); Bucket bucket = buckets.computeIfAbsent(b,bi->new Bucket(b*_factor,_maxQueue)); bucket.release(buffer); }
@Override public ByteBuffer acquire(int size, boolean direct) { int b = bucketFor(size); ConcurrentMap<Integer, Bucket> buffers = bucketsFor(direct); Bucket bucket = buffers.get(b); if (bucket==null) return newByteBuffer(b*_factor, direct); return bucket.acquire(direct); }
@Override public ByteBuffer acquire(int size, boolean direct) { int b = bucketFor(size); ConcurrentMap<Integer, Bucket> buffers = bucketsFor(direct); Bucket bucket = buffers.get(b); if (bucket==null) return newByteBuffer(b*_factor, direct); return bucket.acquire(direct); }
@Override public ByteBuffer acquire(int size, boolean direct) { int b = bucketFor(size); ConcurrentMap<Integer, Bucket> buffers = bucketsFor(direct); Bucket bucket = buffers.get(b); if (bucket==null) return newByteBuffer(b*_factor, direct); return bucket.acquire(direct); }