默认分配器,有时会出现不能及时释放内存,推荐使用jemallocator
jemallocator 是一个与 jemalloc 内存分配器链接的库,提供了 Jemalloc
单元类型,该类型实现了分配器 API 并可以设置为 #[global_allocator]
。
tikv-jemallocator
是 jemallocator
的后继项目。这两个 crate 除了名称不同外完全相同。对于新项目,建议使用 tikv-xxx
版本。
jemalloc 支持生态系统由以下 crate 组成:
GlobalAlloc
和 Alloc
trait 的 Jemalloc
类型。mallctl*()
函数族和 MALLCTL NAMESPACE
)。要使用 tikv-jemallocator,将它添加为依赖:
要将 tikv_jemallocator::Jemalloc
设置为全局分配器,将以下代码添加到您的项目中:
就这样!一旦定义了这个静态变量,jemalloc 将用于同一程序中 Rust 代码请求的所有内存分配。
jemalloc 是一个通用目的的 malloc 实现,专注于:
在以下场景中特别有用:
jemalloc 不支持 MSVC 目标环境,因此在 Windows 上使用 MSVC 工具链时不可用。这就是为什么在示例代码中包括 cfg(not(target_env = "msvc"))
条件的原因。