A an allocator-agnostic crate for measuring the runtime size of a value including the size of any heap allocations that are owned by that value.
This crate is used by both Servo and Firefox for memory usage calculation.
- It isn't bound to a particular heap allocator.
- It provides traits for both "shallow" and "deep" measurement, which gives flexibility in the cases where the traits can't be used.
- It allows for measuring blocks even when only an interior pointer can be
obtained for heap allocations, e.g.
HashSet
andHashMap
. (This relies on the heap allocator having suitable support, whichjemalloc
has.) - It allows handling of types like
Rc
andArc
by providing traits that are different to the ones for non-graph structures.