Enum profile_traits::mem::ReportKind

source ·
pub enum ReportKind {
    ExplicitJemallocHeapSize,
    ExplicitSystemHeapSize,
    ExplicitNonHeapSize,
    ExplicitUnknownLocationSize,
    NonExplicitSize,
}
Expand description

The various kinds of memory measurement.

Here “explicit” means explicit memory allocations done by the application. It includes allocations made at the OS level (via functions such as VirtualAlloc, vm_allocate, and mmap), allocations made at the heap allocation level (via functions such as malloc, calloc, realloc, memalign, operator new, and operator new[]) and where possible, the overhead of the heap allocator itself. It excludes memory that is mapped implicitly such as code and data segments, and thread stacks. “explicit” is not guaranteed to cover every explicit allocation, but it does cover most (including the entire heap), and therefore it is the single best number to focus on when trying to reduce memory usage.

Variants§

§

ExplicitJemallocHeapSize

A size measurement for an explicit allocation on the jemalloc heap. This should be used for any measurements done via the MallocSizeOf trait.

§

ExplicitSystemHeapSize

A size measurement for an explicit allocation on the system heap. Only likely to be used for external C or C++ libraries that don’t use jemalloc.

§

ExplicitNonHeapSize

A size measurement for an explicit allocation not on the heap, e.g. via mmap().

§

ExplicitUnknownLocationSize

A size measurement for an explicit allocation whose location is unknown or uncertain.

§

NonExplicitSize

A size measurement for a non-explicit allocation. This kind is used for global measurements such as “resident” and “vsize”, and also for measurements that cross-cut the measurements grouped under “explicit”, e.g. by grouping those measurements in a way that’s different to how they are grouped under “explicit”.

Trait Implementations§

source§

impl Debug for ReportKind

source§

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

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

impl<'de> Deserialize<'de> for ReportKind

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Serialize for ReportKind

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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> 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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T