#memory-allocator #allocator #memory #global-allocator #count #byte #accounting

accounting-allocator

A global memory allocator wrapper which counts allocated and deallocated bytes

2 unstable releases

0.2.0 Dec 13, 2022
0.1.0 Nov 28, 2022

#705 in Memory management

Download history 22/week @ 2024-11-16 52/week @ 2024-11-23 93/week @ 2024-11-30 52/week @ 2024-12-07 20/week @ 2024-12-14 58/week @ 2024-12-21 13/week @ 2024-12-28 9/week @ 2025-01-04 5/week @ 2025-01-11 12/week @ 2025-01-18 31/week @ 2025-01-25 29/week @ 2025-02-01 17/week @ 2025-02-08 45/week @ 2025-02-15 68/week @ 2025-02-22 63/week @ 2025-03-01

204 downloads per month

MIT license

22KB
369 lines

accounting-allocator

A Rust global memory allocator wrapper which counts allocated and deallocated bytes, avoiding contention between threads.

The accounting allocator avoids contention by using per-thread atomic counters. It incurs small one-time global and per-thread initialization overhead.

API Documentation
Private Documentation

Contributing Bug Reports

GitHub is the project's bug tracker. Please search for similar existing issues before submitting a new one.

License

Licensed under MIT.


lib.rs:

accounting-allocator is a global memory allocator wrapper which counts allocated and deallocated bytes.

Usage

use accounting_allocator::{AccountingAlloc, AllTimeAllocStats};

#[global_allocator]
static GLOBAL_ALLOCATOR: AccountingAlloc = AccountingAlloc::new();

fn main() {
    let AllTimeAllocStats { alloc, dealloc, largest_alloc } = GLOBAL_ALLOCATOR.count().all_time;
    println!("alloc {alloc} dealloc {dealloc} largest_alloc {largest_alloc}");
}

Dependencies

~395KB