Skip to content
Rust allocator using jemalloc as a backend
Rust Shell
Branch: master
Clone or download
slightlyoutofphase and gnzlbg Fix wrong spelling of `unreachable unchecked`.
This is why the CI for jemallocator is failing right now.
Latest commit d5fccc7 Aug 10, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
benches Incorrect path in benchmarks Mar 21, 2019
ci Temporarily disable profiling builds on dev-branch Apr 3, 2019
jemalloc-ctl Do not hide the docs of MIB keys in jemalloc-ctl Jun 16, 2019
jemalloc-sys Bump patch versions again Jun 16, 2019
jemallocator-global Bump patch versions again Jun 16, 2019
systest bump ctest version Oct 31, 2018
tests Update links Apr 25, 2019
.appveyor.yml move init submodules to right after the clone phase Nov 18, 2018
.gitignore Initial commit Jan 21, 2016
.gitmodules update jemalloc5.1RC1 to jemalloc5.1 May 16, 2018
.travis.yml Update links Apr 25, 2019
Cargo.toml Bump patch versions again Jun 16, 2019
LICENSE-APACHE Fill out some more project metadata Jan 21, 2016
LICENSE-MIT Fill out some more project metadata Jan 21, 2016 Fix link to jemallocator-sys' file Apr 29, 2019


Travis-CI Status Appveyor Status Latest Version docs

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:

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


To use jemallocator add it as a dependency:

# Cargo.toml
jemallocator = "0.3.0"

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

extern crate jemallocator;

static ALLOC: jemallocator::Jemalloc = jemallocator::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 jemallocator and jemalloc-sys tests pass on the target?
  • jemalloc: do jemalloc's tests pass on the target?
  • valgrind: do the tests pass under valgrind?

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 valgrind
i686-unknown-linux-gnu (tier 1)
x86_64-unknown-linux-gnu (tier 1)
MacOSX targets: build run jemalloc valgrind
x86_64-apple-darwin (tier 1)
i686-apple-darwin (tier 1)
Windows targets: build run jemalloc valgrind
x86_64-pc-windows-msvc (tier 1)
i686-pc-windows-msvc (tier 1)
x86_64-pc-windows-gnu (tier 1)
i686-pc-windows-gnu (tier 1)
Android targets: build run jemalloc valgrind


The jemallocator crate re-exports the features of the 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 jemallocator by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

You can’t perform that action at this time.