#分配器 #jemalloc #控制API #API绑定

无需std tikv-jemalloc-ctl

jemalloc控制和分析API的安全包装

6个版本

0.6.0 2024年7月14日
0.5.4 2023年7月27日
0.5.0 2022年5月24日
0.4.2 2021年8月9日
0.4.0 2020年7月21日

#266 in 内存管理

Download history 113752/week @ 2024-05-03 127092/week @ 2024-05-10 125820/week @ 2024-05-17 140522/week @ 2024-05-24 154584/week @ 2024-05-31 144904/week @ 2024-06-07 135417/week @ 2024-06-14 151364/week @ 2024-06-21 147356/week @ 2024-06-28 143062/week @ 2024-07-05 152735/week @ 2024-07-12 151982/week @ 2024-07-19 153852/week @ 2024-07-26 148913/week @ 2024-08-02 178660/week @ 2024-08-09 150105/week @ 2024-08-16

661,258 每月下载量
81 个crates中使用(直接使用17个)

MIT/Apache

2MB
52K SLoC

C 47K SLoC // 0.1% comments Rust 2K SLoC // 0.0% comments Visual Studio Project 1.5K SLoC M4 658 SLoC // 0.1% comments Shell 380 SLoC // 0.3% comments C++ 371 SLoC // 0.1% comments Python 261 SLoC // 0.3% comments Visual Studio Solution 125 SLoC XSL 9 SLoC

jemalloc-ctl

Travis-CI Status Latest Version docs

jemalloc的mallctl*()控制和分析API的安全包装。

文档

平台支持

支持所有由tikv-jemallocator crate支持的平台。

示例


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

#[global_allocator]
static ALLOC: tikv_jemallocator::Jemalloc = tikv_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));
    }
}

许可证

本项目采用以下任一许可证:

任选其一。

贡献

除非你明确声明,否则任何有意提交给jemalloc-ctl并由你提交的贡献,根据Apache-2.0许可证定义,将以上双重许可,不附加任何额外条款或条件。

依赖项