abstract long spill(long size, MemoryConsumer trigger)
throws IOException
MemoryConsumer
MemoryConsumer is the contract for memory consumers of TaskMemoryManager with support for spilling.
A MemoryConsumer basically tracks how much memory is allocated.
Creating a MemoryConsumer requires a TaskMemoryManager with optional pageSize and a MemoryMode.
|
Note
|
If not specified, pageSize defaults to TaskMemoryManager.pageSizeBytes and ON_HEAP memory mode.
|
spill Method
|
Caution
|
FIXME |
Memory Allocated — used Registry
used is the amount of memory in use (i.e. allocated) by the MemoryConsumer.
Deallocate LongArray — freeArray Method
void freeArray(LongArray array)
freeArray deallocates the LongArray.
Deallocate MemoryBlock — freePage Method
protected void freePage(MemoryBlock page)
freePage is a protected method to deallocate the MemoryBlock.
Internally, it decrements used registry by the size of page and frees the page.
Allocate LongArray — allocateArray Method
LongArray allocateArray(long size)
allocateArray allocates LongArray of size length.
Internally, it allocates a page for the requested size. The size is recorded in the internal used counter.
However, if it was not possible to allocate the size memory, it shows the current memory usage and a OutOfMemoryError is thrown.
Unable to acquire [required] bytes of memory, got [got]
Acquiring Memory — acquireMemory Method
long acquireMemory(long size)
acquireMemory acquires execution memory of size size. The memory is recorded in used registry.