Rust Service Isn't Leaking – It Could Be the Allocator
7 days ago
- #memory management
- #Rust performance
- #allocator comparison
- 尽管 Rust 代码中没有内存泄漏,但由于分配器行为,处理事件后内存使用量仍然很高。
- Glibc 的 ptmalloc 分配器将已释放的内存保留在竞技场中,导致高驻留集大小,因为已释放的块可能不会返回给操作系统,尤其是在使用线程竞技场和内存碎片化的情况下。
- 切换到 jemalloc 解决了这个问题,因为它使用按大小类别隔离的 slab,允许通过后台线程和衰减计时器独立回收内存。
- Mimalloc 对于突发性工作负载效果不佳,因为跨线程释放延迟了回收,且在无持续分配活动时驻留集大小仍然很高。