179 releases (21 breaking)

new 0.23.2-rc.3 May 6, 2025
0.22.1 Feb 20, 2025
0.21.0 Dec 18, 2024
0.20.2 Nov 28, 2024
0.4.0 Mar 28, 2023

#140 in Memory management

Download history 6805/week @ 2025-01-14 6535/week @ 2025-01-21 5954/week @ 2025-01-28 7092/week @ 2025-02-04 5384/week @ 2025-02-11 7589/week @ 2025-02-18 7103/week @ 2025-02-25 12123/week @ 2025-03-04 15390/week @ 2025-03-11 11601/week @ 2025-03-18 10008/week @ 2025-03-25 11037/week @ 2025-04-01 12609/week @ 2025-04-08 12505/week @ 2025-04-15 12411/week @ 2025-04-22 7501/week @ 2025-04-29

46,999 downloads per month
Used in 49 crates (8 directly)

MIT/Apache

130KB
2K SLoC

Run-time memory tracking and profiling.

First steps

Add re_memory to your Cargo.toml:

cargo add re_memory

Install the AccountingAllocator in your main.rs:

use re_memory::AccountingAllocator;

#[global_allocator]
static GLOBAL: AccountingAllocator<std::alloc::System>
    = AccountingAllocator::new(std::alloc::System);

Checking memory use

Use MemoryUse::capture to get the current memory use of your application.

Finding memory leaks

Turn on memory tracking at the top of your main() function:

re_memory::accounting_allocator::set_tracking_callstacks(true);

Now let your app run for a while, and then call accounting_allocator::tracking_stats to get the statistics. Any memory leak should show up in TrackingStatistics::top_callstacks.

More

See also accounting_allocator.


Run-time memory tracking and profiling.

Part of the rerun family of crates.

Latest version Documentation MIT Apache

This is a library for tracking memory use in a running application. This is useful for tracking leaks, and for figuring out what is using up memory.

re_memory includes an opt-in sampling profiler for allocation callstacks. Each time memory is allocated there is a chance a callstack will be collected. This information is tracked until deallocation. You can thus get information about what callstacks lead to the most live allocations, giving you a very useful memory profile of your running app, with minimal overhead.

Dependencies

~2–30MB
~382K SLoC