Enum GcMode

Source
pub enum GcMode {
    Incremental {
        pause: u16,
        step_multiplier: u16,
        step_size: c_int,
    },
    Generational {
        minor_mul: u8,
        major_mul: u16,
    },
}
Expand description

Lua garbage collection mode setup information.

This structure is used for Thread::switch_gc_to.

Variants§

§

Incremental

Fields

§pause: u16

How long the collector should wait before starting a new cycle. Default is 200, maximum is 1000

The collector starts a new cycle when the use of memory hits pause% of the use after the previous collection. Larger values make the collector less aggressive.

Values equal to or less than 100 mean the collector will not wait to start a new cycle. A value of 200 means that the collector waits for the total memory in use to double before starting a new cycle.

§step_multiplier: u16

Speed of the collector relative to memory allocation; that is, how many elements it marks or sweeps for each kilobyte of memory allocated. Default is 100, maximum is 1000.

Larger values make the collector more aggressive but also increase the size of each incremental step.

You should not use values less than 100, because they make the collector too slow and can result in the collector never finishing a cycle.

§step_size: c_int

Size of each incremental step, specifically how many bytes the interpreter allocates before performing a step. Default is 13 (steps of approximately 8 kilobytes).

This parameter is logarithmic: A value of step_size means the interpreter will allocate 2 ^ step_size bytes between steps and perform equivalent work during the step.

A large value (e.g., 60) makes the collector a stop-the-world (non-incremental) collector.

§

Generational

Fields

§minor_mul: u8

Frequency of minor collections. Default is 20, maximum is 200.

For a minor multiplier minor_mul, a new minor collection will be done when memory grows minor_mul% larger than the memory in use after the previous major collection.

For instance, for a multiplier of 20, the collector will do a minor collection when the use of memory gets 20% larger than the use after the previous major collection.

§major_mul: u16

Frequency of major collections. Default is 100, maximum is 1000.

For a major multiplier major_mul, a new major collection will be done when memory grows major_mul% larger than the memory in use after the previous major collection.

For instance, for a multiplier of 100, the collector will do a major collection when the use of memory gets larger than twice the use after the previous collection.

Trait Implementations§

Source§

impl Clone for GcMode

Source§

fn clone(&self) -> GcMode

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for GcMode

Source§

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

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

impl Ord for GcMode

Source§

fn cmp(&self, other: &GcMode) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for GcMode

Source§

fn eq(&self, other: &GcMode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for GcMode

Source§

fn partial_cmp(&self, other: &GcMode) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for GcMode

Source§

impl Eq for GcMode

Source§

impl StructuralPartialEq for GcMode

Auto Trait Implementations§

§

impl Freeze for GcMode

§

impl RefUnwindSafe for GcMode

§

impl Send for GcMode

§

impl Sync for GcMode

§

impl Unpin for GcMode

§

impl UnwindSafe for GcMode

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.