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 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:
tikv-jemalloc-sys
: builds and links againstjemalloc
exposing raw C bindings to it.tikv-jemallocator
: provides theJemalloc
type which implements theGlobalAlloc
andAlloc
traits.tikv-jemalloc-ctl
: high-level wrapper overjemalloc
's control and introspection APIs (themallctl*()
family of functions and the MALLCTL NAMESPACE)'
To use tikv-jemallocator
add it as a dependency:
# Cargo.toml
[dependencies]
[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = "0.6"
To set tikv_jemallocator::Jemalloc
as the global allocator add this to your project:
// main.rs
#[cfg(not(target_env = "msvc"))]
use tikv_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
: dotikv-jemallocator
andtikv-jemalloc-sys
tests pass on the target?jemalloc
: dotikv-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 |
---|---|---|---|
aarch64-unknown-linux-gnu |
✓ | ✓ | ✗ |
powerpc64le-unknown-linux-gnu |
✓ | ✓ | ✗ |
x86_64-unknown-linux-gnu (tier 1) |
✓ | ✓ | ✓ |
MacOSX targets: | build | run | jemalloc |
aarch64-apple-darwin |
✓ | ✓ | ✗ |
This crate provides following cargo feature flags:
-
alloc_trait
When thealloc_trait
feature of this crate is enabled, it also implements theAlloc
trait, allowing usage in collections. -
default
feature isbackground_threads_runtime_support
. -
The
tikv-jemallocator
crate re-exports the features of thetikv-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 tikv-jemallocator
by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.