benches | ||
ci | ||
jemalloc-sys | ||
src | ||
systest | ||
tests | ||
.appveyor.yml | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
Cargo.toml | ||
Cross.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
jemallocator
A Rust allocator crate which links to jemalloc
and provides a Jemalloc
unit type for use with the #[global_allocator]
attribute.
Usage:
# Cargo.toml
[dependencies]
jemallocator = "0.1.8"
Rust:
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.
Feature flags
This crate has some Cargo feature flags:
-
profiling
: configurejemalloc
with--enable-prof
. -
stats
: configurejemalloc
with--enable-stats
. -
debug
: configurejemalloc
with--enable-debug
. -
bg_thread
(enabled by default): when disabled, configurejemalloc
with--with-malloc-conf=background_thread:false
. -
unprefixed_malloc_on_supported_platforms
: when disabled, configurejemalloc
with--with-jemalloc-prefix=_rjem_
. Enabling this causes symbols likemalloc
to be emitted without a prefix, overriding the ones defined by libc. This usually causes C and C++ code linked in the same program to usejemalloc
as well.On some platforms prefixes are always used because unprefixing is known to cause segfaults due to allocator mismatches.
See jemalloc/INSTALL.md
.
License
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.
Contribution
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.