jemalloc源码解析-核心架构-睿初科技软件开发技术博客
jemalloc是一种通用的内存管理方法, 着重于减少内存碎片和支持可伸缩的并发性。jemalloc首次在FreeBSD中引入,后续增加了heap profiling, Valgrind integration, and extensive monitoring/tuning hooks等功能,目前在多个大型项目中都有应用。 近期我们项目中也引入了jemalloc, 下面记录一下我对jemalloc的理解。
jemalloc的设计目标:
- 快速分配/释放内存,最小化内存使用
- 在最小化内存的前提下,尽可能保证内存分配的连续性, 减少内存碎片
- 好的线程扩展性
- 支持堆性能分析
在实现malloc的时候,其设计者参考了一些已被验证的好的设计思想:
- 划分不同size大小的小对象, 减少内存碎片
- 合理选择size class的数量,基于内部碎片和外部碎片的折中考虑
- 严格限制分配器元数据的开销(低于2%,不包括碎片)
- 最小化活跃页面集合(减少内存交换)
- 最小化锁竞争(arena and thread cache)
- 如果不通用,说明不够好(If it isn't general purpose, it isn't good enough)
Read full article from jemalloc源码解析-核心架构-睿初科技软件开发技术博客
No comments:
Post a Comment