mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
ensure changing buffer size requirements
This commit is contained in:
parent
aee6d89350
commit
cacc601cc8
|
@ -1,22 +1,39 @@
|
|||
package seaweedfs.client;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ByteBufferPool {
|
||||
|
||||
static List<ByteBuffer> bufferList = new ArrayList<>();
|
||||
private static final int MIN_BUFFER_SIZE = 8 * 1024 * 1024;
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ByteBufferPool.class);
|
||||
|
||||
private static final List<ByteBuffer> bufferList = new ArrayList<>();
|
||||
|
||||
public static synchronized ByteBuffer request(int bufferSize) {
|
||||
if (bufferSize < MIN_BUFFER_SIZE) {
|
||||
bufferSize = MIN_BUFFER_SIZE;
|
||||
}
|
||||
if (bufferList.isEmpty()) {
|
||||
return ByteBuffer.allocate(bufferSize);
|
||||
}
|
||||
return bufferList.remove(bufferList.size()-1);
|
||||
ByteBuffer buffer = bufferList.remove(bufferList.size() - 1);
|
||||
if (buffer.capacity() >= bufferSize) {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
LOG.info("add new buffer from {} to {}", buffer.capacity(), bufferSize);
|
||||
bufferList.add(0, buffer);
|
||||
return ByteBuffer.allocate(bufferSize);
|
||||
|
||||
}
|
||||
|
||||
public static synchronized void release(ByteBuffer obj) {
|
||||
bufferList.add(obj);
|
||||
bufferList.add(0, obj);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue