Arena 内存分配器 及 Rust crate 推荐
Arena 指的是预先分配一大片内存空间,并且可以一次性释放掉整个内存空间。
目标是使分配和释放更快,一次性申请的内存空间是连续的,有助于缓存局部性策略。
分配速度更快,因为每个后续分配都是指针增量,而释放速度更快,因为您只需释放整个 arena,而不是其中的每个单独的东西。
crates
仅支持同个类型对象的分配
https://github.com/thomcc/rust-typed-arena
支持多类型对象的分配
https://crates.io/crates/bumpalo
能单独释放指定对象的分配
https://crates.io/crates/generational-arena
比较新的实现,可以学习源码,调用libc库mmap实现内存分配
https://github.com/emoon/arena-allocator
使用mem::MaybeUninit来分配内存
https://docs.rs/kioku/latest/kioku/
blogs
https://manishearth.github.io/blog/2021/03/15/arenas-in-rust/
应用场景
自定义了一个arena内存分配器
https://github.com/monadbobo/skiplist-rust
如何利用arena构造循环引用的结构
https://www.less-bug.com/posts/rust-arena-allocator-usage-practice/
对比
https://crates.io/crates/tikv-jemallocator

 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号