Links against
jemallocand provides aJemallocunit 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 againstjemallocexposing raw C bindings to it.jemallocator: provides theJemalloctype which implements theGlobalAllocandAlloctraits.jemalloc-ctl: high-level wrapper overjemalloc's control and introspection APIs (themallctl*()family of functions and the MALLCTL NAMESPACE)'
To use jemallocator add it as a dependency:
# Cargo.toml
[dependencies]
[target.'cfg(not(target_env = "msvc"))'.dependencies]
jemallocator = "0.3.2"To set jemallocator::Jemalloc as the global allocator add this to your project:
# main.rs
#[cfg(not(target_env = "msvc"))]
use jemallocator::Jemalloc;
#[cfg(not(target_env = "msvc"))]
#[global_allocator]
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.
The following table describes the supported platforms:
build: does the library compile for the target?run: dojemallocatorandjemalloc-systests pass on the target?jemalloc: dojemalloc'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
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.