[][src]Struct context_allocator::mmap::MemoryMapAllocator

pub struct MemoryMapAllocator { /* fields omitted */ }

This allocator allocates memory-mapped data, optionally using NUMA policy to allocate on a memory node closest to the current thread.

It is slow and uses system calls.

On non-Linux systems except for NetBSD, this allocator is extremely inefficient when reallocating.

On Android, DragonFlyBSD, FreeBSD, Linux and OpenBSD mappings are omitted from core dumps for data privacy.

When dropped, any memory allocated with this allocator is NOT freed.

However, it is appropriate as a 'backing store' for other allocators.

Methods

impl MemoryMapAllocator[src]

pub fn new(
    lock: bool,
    prefault: bool,
    do_not_reserve_swap_space: bool,
    allocate_within_first_32Gb: bool,
    huge_page_size: HugePageSize,
    numa_settings: Option<NumaSettings>
) -> Self
[src]

Create a new instance.

  • lock: Should allocated memory be locked (through a process equivalent to mlock()), thereby making out-of-memory fail fast. This setting will cause failures if rlimit() has not been increased.
  • prefault: Should allocated memory be pre-faulted, ie all pages loaded and made resident in RAM when allocation occurs? This slows down allocation but make subsequent accesses faster. Only on Android, FreeBSD and Linux.
  • do_not_reserve_swap_space: Do not reserve swap space for the mapping. Only on Android, Linux and NetBSD.
  • allocate_within_first_32Gb: Useful for stacks and creating executable code. Only on Android, FreeBSD and Linux on 64-bit CPUs.
  • huge_page_size: Huge page size to use with Transparent Huge Pages (THP). On operating systems other than Android and Linux, specifying a huge page size has no effect.
  • numa_settings: NUMA policy settings for optimizing memory allocations to the nearest node. On operating systems other than Android and Linux, specifying a value has no effect.

Trait Implementations

impl Allocator for MemoryMapAllocator[src]

const ZeroSizedAllocation: NonNull<u8>[src]

The sentinel value used for a zero-sized allocation.

fn adapt<'a>(&'a self) -> AllocatorAdaptor<'a, Self>[src]

Adapts to a GlobalAlloc and Alloc.

fn adapt_reference<'a>(&'a self) -> &'a AllocatorAdaptor<'a, Self>[src]

Adapts a reference to a GlobalAlloc and Alloc reference.

impl MemorySource for MemoryMapAllocator[src]

impl Eq for MemoryMapAllocator[src]

impl PartialOrd<MemoryMapAllocator> for MemoryMapAllocator[src]

impl PartialEq<MemoryMapAllocator> for MemoryMapAllocator[src]

impl Clone for MemoryMapAllocator[src]

default fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl Default for MemoryMapAllocator[src]

impl Ord for MemoryMapAllocator[src]

default fn max(self, other: Self) -> Self
1.21.0
[src]

Compares and returns the maximum of two values. Read more

default fn min(self, other: Self) -> Self
1.21.0
[src]

Compares and returns the minimum of two values. Read more

default fn clamp(self, min: Self, max: Self) -> Self[src]

🔬 This is a nightly-only experimental API. (clamp)

Restrict a value to a certain interval. Read more

impl Debug for MemoryMapAllocator[src]

impl Hash for MemoryMapAllocator[src]

default fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0
[src]

Feeds a slice of this type into the given [Hasher]. Read more

Auto Trait Implementations

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.