[−][src]Struct context_allocator::mmap::MemoryMapAllocator
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]
lock: bool,
prefault: bool,
do_not_reserve_swap_space: bool,
allocate_within_first_32Gb: bool,
huge_page_size: HugePageSize,
numa_settings: Option<NumaSettings>
) -> Self
Create a new instance.
lock
: Should allocated memory be locked (through a process equivalent tomlock()
), thereby making out-of-memory fail fast. This setting will cause failures ifrlimit()
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]
fn allocate(
&self,
non_zero_size: NonZeroUsize,
non_zero_power_of_two_alignment: NonZeroUsize
) -> Result<NonNull<u8>, AllocErr>
[src]
&self,
non_zero_size: NonZeroUsize,
non_zero_power_of_two_alignment: NonZeroUsize
) -> Result<NonNull<u8>, AllocErr>
fn deallocate(
&self,
non_zero_size: NonZeroUsize,
_non_zero_power_of_two_alignment: NonZeroUsize,
current_memory: NonNull<u8>
)
[src]
&self,
non_zero_size: NonZeroUsize,
_non_zero_power_of_two_alignment: NonZeroUsize,
current_memory: NonNull<u8>
)
fn growing_reallocate(
&self,
non_zero_new_size: NonZeroUsize,
_non_zero_power_of_two_alignment: NonZeroUsize,
non_zero_current_size: NonZeroUsize,
current_memory: NonNull<u8>
) -> Result<NonNull<u8>, AllocErr>
[src]
&self,
non_zero_new_size: NonZeroUsize,
_non_zero_power_of_two_alignment: NonZeroUsize,
non_zero_current_size: NonZeroUsize,
current_memory: NonNull<u8>
) -> Result<NonNull<u8>, AllocErr>
fn shrinking_reallocate(
&self,
non_zero_new_size: NonZeroUsize,
_non_zero_power_of_two_alignment: NonZeroUsize,
non_zero_current_size: NonZeroUsize,
current_memory: NonNull<u8>
) -> Result<NonNull<u8>, AllocErr>
[src]
&self,
non_zero_new_size: NonZeroUsize,
_non_zero_power_of_two_alignment: NonZeroUsize,
non_zero_current_size: NonZeroUsize,
current_memory: NonNull<u8>
) -> Result<NonNull<u8>, AllocErr>
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]
fn obtain(&self, non_zero_size: NonZeroUsize) -> Result<NonNull<u8>, AllocErr>
[src]
fn release(&self, non_zero_size: NonZeroUsize, current_memory: NonNull<u8>)
[src]
impl Eq for MemoryMapAllocator
[src]
impl PartialOrd<MemoryMapAllocator> for MemoryMapAllocator
[src]
fn partial_cmp(&self, other: &MemoryMapAllocator) -> Option<Ordering>
[src]
fn lt(&self, other: &MemoryMapAllocator) -> bool
[src]
fn le(&self, other: &MemoryMapAllocator) -> bool
[src]
fn gt(&self, other: &MemoryMapAllocator) -> bool
[src]
fn ge(&self, other: &MemoryMapAllocator) -> bool
[src]
impl PartialEq<MemoryMapAllocator> for MemoryMapAllocator
[src]
fn eq(&self, other: &MemoryMapAllocator) -> bool
[src]
fn ne(&self, other: &MemoryMapAllocator) -> bool
[src]
impl Clone for MemoryMapAllocator
[src]
fn clone(&self) -> 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]
fn cmp(&self, other: &MemoryMapAllocator) -> Ordering
[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]
clamp
)Restrict a value to a certain interval. Read more
impl Debug for MemoryMapAllocator
[src]
impl Hash for MemoryMapAllocator
[src]
Auto Trait Implementations
impl Send for MemoryMapAllocator
impl Sync for MemoryMapAllocator
Blanket Implementations
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
impl<T> From for T
[src]
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,