Links against
jemalloc
and provides aJemalloc
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 [dependencies] jemallocator = "0.3.0"
To set jemallocator::Jemalloc
as the global allocator add this to your project:
extern crate jemallocator; #[global_allocator] 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.
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 |
---|---|---|---|---|
aarch64-unknown-linux-gnu | ✓ | ✓ | ✗ | ✗ |
arm-unknown-linux-gnueabi | ✓ | ✓ | ✗ | ✗ |
armv7-unknown-linux-gnueabi | ✓ | ✓ | ✗ | ✗ |
i586-unknown-linux-gnu | ✓ | ✓ | ✓ | ✗ |
i686-unknown-linux-gnu (tier 1) | ✓ | ✓ | ✓ | ✗ |
mips-unknown-linux-gnu | ✓ | ✓ | ✗ | ✗ |
mipsel-unknown-linux-musl | ✓ | ✓ | ✗ | ✗ |
mips64-unknown-linux-gnuabi64 | ✓ | ✓ | ✗ | ✗ |
mips64el-unknown-linux-gnuabi64 | ✓ | ✓ | ✗ | ✗ |
powerpc-unknown-linux-gnu | ✓ | ✓ | ✗ | ✗ |
powerpc64-unknown-linux-gnu | ✓ | ✓ | ✗ | ✗ |
powerpc64le-unknown-linux-gnu | ✓ | ✓ | ✗ | ✗ |
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 |
aarch64-linux-android | ✓ | ✓ | ✗ | ✗ |
x86_64-linux-android | ✓ | ✓ | ✓ | ✗ |
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.