#allocator #bootstrap #memory-allocator

nightly no-std bsalloc

一个简单的通用分配器,用于引导其他分配器

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年9月3日

#25#bootstrap


用于 elfmalloc

Apache-2.0

71KB
1K SLoC

bsalloc:一个全局的、no-std 动态内存分配器。

该包实现了一个非常简单的全局分配器。它用于为其他仓库中动态分配器的依赖项提供服务。换句话说,这是用来在没有创建对另一个 malloc 实现的无谓依赖的情况下,bootstrap 本仓库中更高效的分配器。

结构

分配器是 mmap 的一个薄包装器。我们不是简单地直接调用 mmapmunmap 进行动态分配(这在一些微基准测试中会减慢速度),而是有两个“大小类别”,每个类别都有一个固定大小的全局缓存。这些缓存有一个线程安全的接口,允许一个线程高效地重用它或另一个线程释放的内存。自然地,大于最大大小类别的分配将回退到直接使用 mmap

依赖

~235–510KB