#分配器 #jemalloc #API绑定

tikv-jemallocator

基于jemalloc的Rust分配器

6个版本

0.6.0 2024年7月14日
0.5.4 2023年7月27日
0.5.0 2022年5月24日
0.4.3 2022年2月21日
0.4.0 2020年7月21日

#6内存管理

Download history 184189/week @ 2024-05-03 201919/week @ 2024-05-10 188557/week @ 2024-05-17 205009/week @ 2024-05-24 230805/week @ 2024-05-31 217729/week @ 2024-06-07 210362/week @ 2024-06-14 216890/week @ 2024-06-21 220592/week @ 2024-06-28 222656/week @ 2024-07-05 228923/week @ 2024-07-12 224223/week @ 2024-07-19 224521/week @ 2024-07-26 224201/week @ 2024-08-02 256597/week @ 2024-08-09 236830/week @ 2024-08-16

984,674 每月下载量
139 个crates(90个直接)中使用

MIT/Apache

2MB
51K SLoC

C 47K SLoC // 0.1% comments Visual Studio Project 1.5K SLoC Rust 808 SLoC // 0.1% comments M4 658 SLoC // 0.1% comments Shell 380 SLoC // 0.3% comments C++ 371 SLoC // 0.1% comments Python 261 SLoC // 0.3% comments Visual Studio Solution 125 SLoC XSL 9 SLoC

tikv-jemallocator

ci Latest Version docs

该项目是 jemallocator 的后继者。

由于历史原因,该项目也以 jemallocator 的名称发布。这两个crates除了名称外都是相同的。对于新项目,建议使用 tikv-xxx 版本。

链接到 jemalloc 并提供一个 Jemalloc 单元类型,该类型实现了分配器API,可以设置为 #[global_allocator]

概览

jemalloc 支持生态系统包括以下crates

  • tikv-jemalloc-sys:构建并链接到 jemalloc,暴露原始C绑定。
  • tikv-jemallocator:提供 Jemalloc 类型,该类型实现了 GlobalAllocAlloc 特性。
  • tikv-jemalloc-ctl:对 jemalloc 的控制和内省API的高级包装(mallctl*() 函数系列和 MALLCTL 命名空间

文档

要使用 tikv-jemallocator,请将其作为依赖项添加

# Cargo.toml
[dependencies]

[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = "0.6"

要将 tikv_jemallocator::Jemalloc 设置为全局分配器,请将以下内容添加到项目中

// main.rs
#[cfg(not(target_env = "msvc"))]
use tikv_jemallocator::Jemalloc;

#[cfg(not(target_env = "msvc"))]
#[global_allocator]
static GLOBAL: Jemalloc = Jemalloc;

这就完成了!一旦你定义了这个 static,jemalloc 将会用于同一程序中由 Rust 代码请求的所有分配。

平台支持

以下表格描述了支持的平台

  • build:库是否能在目标平台上编译?
  • run:在目标平台上,tikv-jemallocatortikv-jemalloc-sys 的测试是否通过?
  • jemalloc:在目标平台上,tikv-jemalloc 的测试是否通过?

一级目标平台在所有 Rust 频道(稳定版、Beta 版和 Nightly 版)上进行测试。其他所有目标平台只在 Rust Nightly 上进行测试。

Linux 目标平台 build run jemalloc
aarch64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
x86_64-unknown-linux-gnu(一级目标平台)
MacOSX 目标平台 build run jemalloc
aarch64-apple-darwin

功能

tikv-jemallocator 包导出 tikv-jemalloc-sys 依赖的 功能

许可证

本项目根据您的选择,受以下许可证之一保护

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义,您提交给 tikv-jemallocator 的任何有意贡献都将根据上述方式双重许可,而不附加任何额外条款或条件。

依赖项