#alloc #stats #instrument #statistics

dev stats_alloc

一个允许对全局分配器进行仪表化的分配器包装器

11个版本

使用旧的Rust 2015

0.1.10 2022年3月30日
0.1.9 2022年3月30日
0.1.8 2019年5月13日
0.1.6 2018年8月3日

#29 in 内存管理

Download history 38713/week @ 2024-03-14 43592/week @ 2024-03-21 50730/week @ 2024-03-28 54588/week @ 2024-04-04 60952/week @ 2024-04-11 61437/week @ 2024-04-18 56955/week @ 2024-04-25 61586/week @ 2024-05-02 77242/week @ 2024-05-09 89353/week @ 2024-05-16 86592/week @ 2024-05-23 142409/week @ 2024-05-30 167587/week @ 2024-06-06 144207/week @ 2024-06-13 173882/week @ 2024-06-20 171567/week @ 2024-06-27

695,174 个月下载量
用于 17 crates

MIT 许可证

13KB
188

stats_alloc

用于Rust的全局分配器的仪表化中间件,在测试中用于验证关于分配模式的假设,以及在可能的生产负载中用于监测内存泄漏。

示例

extern crate stats_alloc;

use stats_alloc::{StatsAlloc, Region, INSTRUMENTED_SYSTEM};
use std::alloc::System;

#[global_allocator]
static GLOBAL: &StatsAlloc<System> = &INSTRUMENTED_SYSTEM;

fn example_using_region() {
    let reg = Region::new(&GLOBAL);
    let x: Vec<u8> = Vec::with_capacity(1_024);
    println!("Stats at 1: {:#?}", reg.change());
    // Used here to ensure that the value is not
    // dropped before we check the statistics
    ::std::mem::size_of_val(&x);
}

自定义分配器

由于即将稳定的未稳定特性 const_fn_trait_bound 的使用和仪表化类型的内部不公开,目前使用自定义分配器需要使用夜间编译器和编译“夜间”功能。如果您没问题,可以将自定义分配器包装如下

#[global_allocator]
static GLOBAL: StatsAlloc<System> = StatsAlloc::new(MyCustomAllocator::new());

无运行时依赖

功能