116 releases (15 breaking)

0.17.0 Jul 8, 2024
0.17.0-alpha.8 Jun 25, 2024
0.15.0-alpha.5 Mar 29, 2024
0.12.0-alpha.2 Dec 26, 2023
0.4.0 Mar 28, 2023

#192 in Memory management

Download history 4088/week @ 2024-04-04 6110/week @ 2024-04-11 5286/week @ 2024-04-18 4771/week @ 2024-04-25 5128/week @ 2024-05-02 5874/week @ 2024-05-09 7401/week @ 2024-05-16 7631/week @ 2024-05-23 5416/week @ 2024-05-30 5994/week @ 2024-06-06 6623/week @ 2024-06-13 8476/week @ 2024-06-20 8886/week @ 2024-06-27 10636/week @ 2024-07-04 10385/week @ 2024-07-11 10078/week @ 2024-07-18

41,312 downloads per month
Used in 33 crates (5 directly)

MIT/Apache

115KB
2K SLoC

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.


lib.rs:

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.

Dependencies

~2–29MB
~418K SLoC