MemoryConsumer¶
MemoryConsumer
is an abstraction of spillable memory consumers (of TaskMemoryManager).
MemoryConsumer
s correspond to individual operators and data structures within a task. TaskMemoryManager
receives memory allocation requests from MemoryConsumer
s and issues callbacks to consumers in order to trigger spilling when running low on memory.
A MemoryConsumer
basically tracks how much memory is allocated.
Contract¶
spill¶
void spill() // (1)
long spill(
long size,
MemoryConsumer trigger)
- Uses
MAX_VALUE
for the size and this MemoryConsumer
Used when:
TaskMemoryManager
is requested to acquire execution memoryUnsafeExternalSorter
is requested to createWithExistingInMemorySorter
Implementations¶
- BytesToBytesMap
LongToUnsafeRowMap
RowBasedKeyValueBatch
- ShuffleExternalSorter
- Spillable
- UnsafeExternalSorter
Creating Instance¶
MemoryConsumer
takes the following to be created:
- TaskMemoryManager
- Page Size
-
MemoryMode
(ON_HEAP
orOFF_HEAP
)
Abstract Class
MemoryConsumer
is an abstract class and cannot be created directly. It is created indirectly for the concrete MemoryConsumers.