Skip to main content

HeapStats

Struct HeapStats 

Source
pub struct HeapStats {
    pub committed: usize,
    pub reserved: usize,
    pub malloc_requested: usize,
    pub pages: usize,
    pub pages_abandoned: usize,
    pub heaps: usize,
    pub theaps: usize,
    pub purged: usize,
    pub detailed: bool,
}
Expand description

Exact allocator counters accompanying a ProfStats reading.

These come from mimalloc v3’s per-heap statistics (mi_heap_stats_get/mi_subproc_stats_get), which the v2 engine did not expose. They are valid even when the profiler is stopped.

Fields§

§committed: usize

Bytes currently committed from the OS.

§reserved: usize

Bytes currently reserved from the OS (always >= committed).

§malloc_requested: usize

Bytes the application actually requested and still holds.

Only maintained when the C library was built with MI_STAT >= 2; otherwise this is 0. Check HeapStats::detailed before using it.

§pages: usize

Live mimalloc pages.

§pages_abandoned: usize

Pages abandoned by exited threads.

§heaps: usize

Live first-class heaps.

§theaps: usize

Live thread-local heaps. The main thread’s statically-initialized theap is not counted, so a single-threaded process reports 0.

§purged: usize

Cumulative bytes purged back to the OS.

§detailed: bool

Whether the C library was built with MI_STAT >= 2 (“detailed” statistics), which upstream enables by default only for debug builds. HeapStats::malloc_requested is maintained only at that level; every other field here is maintained at any level.

Without this flag you cannot tell “the application allocated nothing” from “this build does not track that counter”.

Trait Implementations§

Source§

impl Clone for HeapStats

Source§

fn clone(&self) -> HeapStats

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HeapStats

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for HeapStats

Source§

fn default() -> HeapStats

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.