public abstract class Chunk
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected java.util.concurrent.atomic.AtomicInteger |
allocCount
Total number of allocations satisfied from this buffer
|
protected java.nio.ByteBuffer |
data
Actual underlying data
|
protected java.util.concurrent.atomic.AtomicInteger |
nextFreeOffset
Offset for the next allocation, or the sentinel value -1 which implies that the chunk is still
uninitialized.
|
protected static int |
OOM |
protected int |
size
Size of chunk in bytes
|
protected static int |
UNINITIALIZED |
Constructor and Description |
---|
Chunk(int size,
int id)
Create an uninitialized chunk.
|
Chunk(int size,
int id,
boolean fromPool)
Create an uninitialized chunk.
|
Modifier and Type | Method and Description |
---|---|
int |
alloc(int size)
Try to allocate
size bytes from the chunk. |
void |
init()
Actually claim the memory for this chunk.
|
java.lang.String |
toString() |
protected java.nio.ByteBuffer data
protected static final int UNINITIALIZED
protected static final int OOM
protected java.util.concurrent.atomic.AtomicInteger nextFreeOffset
protected java.util.concurrent.atomic.AtomicInteger allocCount
protected final int size
public Chunk(int size, int id)
size
- in bytesid
- the chunk idpublic Chunk(int size, int id, boolean fromPool)
size
- in bytesid
- the chunk idfromPool
- if the chunk is formed by poolpublic void init()
public int alloc(int size)
size
bytes from the chunk.
If a chunk is tried to get allocated before init() call, the thread doing the allocation
will be in busy-wait state as it will keep looping till the nextFreeOffset is set.public java.lang.String toString()
toString
in class java.lang.Object