Skip to main content

MemoryConsumer

Trait MemoryConsumer 

Source
pub trait MemoryConsumer: Send + Sync {
    // Required methods
    fn name(&self) -> &str;
    fn memory_usage(&self) -> usize;
    fn eviction_priority(&self) -> u8;
    fn region(&self) -> MemoryRegion;
    fn evict(&self, target_bytes: usize) -> usize;

    // Provided methods
    fn can_spill(&self) -> bool { ... }
    fn spill(&self, _target_bytes: usize) -> Result<usize, SpillError> { ... }
    fn reload(&self) -> Result<(), SpillError> { ... }
}
Expand description

Trait for subsystems that consume managed memory.

Memory consumers register with the buffer manager and participate in eviction when memory pressure is detected. Lower priority consumers are evicted first.

Required Methods§

Source

fn name(&self) -> &str

Returns a unique name for this consumer (for debugging/logging).

Source

fn memory_usage(&self) -> usize

Returns current memory usage in bytes.

Source

fn eviction_priority(&self) -> u8

Returns eviction priority (0 = lowest priority, evict first; 255 = highest, evict last).

Source

fn region(&self) -> MemoryRegion

Returns which memory region this consumer belongs to.

Source

fn evict(&self, target_bytes: usize) -> usize

Attempts to evict/release memory to reach target usage.

Returns the number of bytes actually freed.

Provided Methods§

Source

fn can_spill(&self) -> bool

Returns whether this consumer supports spilling to disk.

Source

fn spill(&self, _target_bytes: usize) -> Result<usize, SpillError>

Spills data to disk to free memory.

Returns the number of bytes freed on success.

§Errors

Returns an error if spilling fails or is not supported.

Source

fn reload(&self) -> Result<(), SpillError>

Reloads spilled data from disk (called when memory becomes available).

§Errors

Returns an error if reloading fails.

Implementors§