jemallocator/jemalloc-ctl
Jay Lee 3b21b21bc9
fix name
Signed-off-by: Jay Lee <BusyJayLee@gmail.com>
2023-07-28 00:17:23 +08:00
..
src Merge branch 'main' 2023-02-06 15:37:47 +08:00
Cargo.toml fix name 2023-07-28 00:17:23 +08:00
LICENSE-APACHE add jemalloc-ctl 2019-02-27 09:39:39 +01:00
LICENSE-MIT add jemalloc-ctl 2019-02-27 09:39:39 +01:00
README.md *: revert name (#25) 2022-04-29 16:06:09 +08:00
rustfmt.toml add rustfmt.toml 2019-02-27 09:39:39 +01:00

README.md

jemalloc-ctl

Travis-CI Status Latest Version docs

A safe wrapper over jemalloc's mallctl*() control and introspection APIs.

Documentation

Platform support

Supported on all platforms supported by the jemallocator crate.

Example


use std::thread;
use std::time::Duration;
use jemalloc_ctl::{stats, epoch};

#[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;

fn main() {
    // Obtain a MIB for the `epoch`, `stats.allocated`, and
    // `atats.resident` keys:
    let e = epoch::mib().unwrap();
    let allocated = stats::allocated::mib().unwrap();
    let resident = stats::resident::mib().unwrap();
    
    loop {
        // Many statistics are cached and only updated 
        // when the epoch is advanced:
        e.advance().unwrap();
        
        // Read statistics using MIB key:
        let allocated = allocated.read().unwrap();
        let resident = resident.read().unwrap();
        println!("{} bytes allocated/{} bytes resident", allocated, resident);
        thread::sleep(Duration::from_secs(10));
    }
}

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in jemalloc-ctl by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.