2016-01-21 01:06:21 +00:00
|
|
|
# jemallocator
|
|
|
|
|
2018-05-04 16:28:20 +00:00
|
|
|
[![Build Status](https://travis-ci.org/alexcrichton/jemallocator.svg?branch=master)](https://travis-ci.org/alexcrichton/jemallocator) [![Build Status](https://ci.appveyor.com/api/projects/status/github/alexcrichton/jemallocator?branch=master&svg=true)](https://ci.appveyor.com/project/alexcrichton/jemallocator/branch/master)
|
2016-01-21 01:06:21 +00:00
|
|
|
|
2017-05-30 04:58:12 +00:00
|
|
|
[Documentation](https://docs.rs/jemallocator)
|
2016-01-21 01:06:21 +00:00
|
|
|
|
2018-06-25 07:06:25 +00:00
|
|
|
A Rust allocator crate which links to [jemalloc](http://jemalloc.net/)
|
|
|
|
and provides a `Jemalloc` unit type for use with the `#[global_allocator]` attribute.
|
2016-01-21 01:34:31 +00:00
|
|
|
|
|
|
|
Usage:
|
|
|
|
|
|
|
|
```toml
|
|
|
|
# Cargo.toml
|
|
|
|
[dependencies]
|
2018-06-25 07:06:25 +00:00
|
|
|
jemallocator = "0.1.8"
|
2016-01-21 01:34:31 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Rust:
|
|
|
|
|
|
|
|
```rust
|
|
|
|
extern crate jemallocator;
|
2017-07-07 15:24:26 +00:00
|
|
|
|
|
|
|
#[global_allocator]
|
|
|
|
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
2016-01-21 01:34:31 +00:00
|
|
|
```
|
|
|
|
|
2018-06-25 07:06:25 +00:00
|
|
|
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.
|
2016-01-21 01:34:31 +00:00
|
|
|
|
2017-10-30 21:07:03 +00:00
|
|
|
|
2018-06-25 07:21:33 +00:00
|
|
|
# Feature flags
|
|
|
|
|
|
|
|
This crate has some Cargo feature flags:
|
|
|
|
|
|
|
|
* `profiling`: configure jemalloc with `--enable-prof`.
|
|
|
|
|
|
|
|
* `debug`: configure jemalloc with `--enable-debug`.
|
|
|
|
|
|
|
|
* `bg_thread`: enabled by default.
|
|
|
|
When disabled, configure jemalloc with `--with-malloc-conf=background_thread:false`.
|
|
|
|
|
|
|
|
* `unprefixed_malloc_on_supported_platforms`:
|
|
|
|
when disabled, configure jemalloc with `--with-jemalloc-prefix=`.
|
|
|
|
Enabling this causes symbols like `malloc` 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 use jemalloc as well.
|
|
|
|
|
|
|
|
On some platforms prefixes are always used
|
|
|
|
because unprefixing is known to cause segfaults due to allocator mismatches.
|
|
|
|
|
|
|
|
See [`jemalloc/INSTALL.md`](https://github.com/jemalloc/jemalloc/blob/dev/INSTALL.md#advanced-configuration).
|
|
|
|
|
2016-01-21 01:06:21 +00:00
|
|
|
# License
|
|
|
|
|
2017-10-30 21:11:08 +00:00
|
|
|
This project is licensed under either of
|
2017-10-30 21:07:03 +00:00
|
|
|
|
|
|
|
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
|
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
|
|
http://opensource.org/licenses/MIT)
|
|
|
|
|
|
|
|
at your option.
|
|
|
|
|
|
|
|
### Contribution
|
2016-01-21 01:06:21 +00:00
|
|
|
|
2017-10-30 21:07:03 +00:00
|
|
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
2018-02-01 12:18:12 +00:00
|
|
|
for inclusion in jemallocator by you, as defined in the Apache-2.0 license, shall be
|
2017-10-30 21:07:03 +00:00
|
|
|
dual licensed as above, without any additional terms or conditions.
|