#allocator #jemalloc


A Rust allocator backed by jemalloc

5 releases

0.5.4 Jul 27, 2023
0.5.0 May 24, 2022
0.4.3 Feb 21, 2022
0.4.1 Nov 17, 2020
0.4.0 Jul 21, 2020

#19 in Memory management

Download history 61558/week @ 2023-06-11 62295/week @ 2023-06-18 60614/week @ 2023-06-25 58868/week @ 2023-07-02 55678/week @ 2023-07-09 63086/week @ 2023-07-16 66839/week @ 2023-07-23 58456/week @ 2023-07-30 59130/week @ 2023-08-06 67800/week @ 2023-08-13 62383/week @ 2023-08-20 89230/week @ 2023-08-27 83075/week @ 2023-09-03 87533/week @ 2023-09-10 86098/week @ 2023-09-17 104852/week @ 2023-09-24

365,795 downloads per month
Used in 83 crates (53 directly)


50K SLoC

C 47K SLoC // 0.1% comments Rust 848 SLoC // 0.1% comments Visual Studio Project 757 SLoC Shell 380 SLoC // 0.3% comments C++ 371 SLoC // 0.1% comments Python 261 SLoC // 0.3% comments Visual Studio Solution 125 SLoC XSL 9 SLoC


ci Latest Version docs

This project is the successor of jemallocator.

The project is also published as jemallocator for historical reasons. The two crates are the same except names. For new projects, it's recommended to use tikv-xxx versions instead.

Links against jemalloc and provides a Jemalloc unit type that implements the allocator APIs and can be set as the #[global_allocator]


The jemalloc support ecosystem consists of the following crates:

  • tikv-jemalloc-sys: builds and links against jemalloc exposing raw C bindings to it.
  • tikv-jemallocator: provides the Jemalloc type which implements the GlobalAlloc and Alloc traits.
  • tikv-jemalloc-ctl: high-level wrapper over jemalloc's control and introspection APIs (the mallctl*() family of functions and the MALLCTL NAMESPACE)'


To use tikv-jemallocator add it as a dependency:

# Cargo.toml

[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = "0.5"

To set tikv_jemallocator::Jemalloc as the global allocator add this to your project:

#[cfg(not(target_env = "msvc"))]
use tikv_jemallocator::Jemalloc;

#[cfg(not(target_env = "msvc"))]
static GLOBAL: Jemalloc = Jemalloc;

And that's it! Once you've defined this static then jemalloc will be used for all allocations requested by Rust code in the same program.

Platform support

The following table describes the supported platforms:

  • build: does the library compile for the target?
  • run: do tikv-jemallocator and tikv-jemalloc-sys tests pass on the target?
  • jemalloc: do tikv-jemalloc's tests pass on the target?

Tier 1 targets are tested on all Rust channels (stable, beta, and nightly). All other targets are only tested on Rust nightly.

Linux targets: build run jemalloc
x86_64-unknown-linux-gnu (tier 1)
MacOSX targets: build run jemalloc
x86_64-apple-darwin (tier 1)


The tikv-jemallocator crate re-exports the features of the tikv-jemalloc-sys dependency.


This project is licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in tikv-jemallocator by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.