【操作系统百科】用户态分配器:jemalloc vs tcmalloc
jemalloc 与 tcmalloc 都想解决多线程分配器的老问题:锁争抢、碎片、RSS 膨胀与回收抖动。但两者把优化重点放在了不同位置:tcmalloc 更激进地把热路径推到 per-CPU,jemalloc 则把 arena、extent、decay 和 profiling 做成了一套更完整的内存治理工具箱。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 3 篇文章 · 返回首页
jemalloc 与 tcmalloc 都想解决多线程分配器的老问题:锁争抢、碎片、RSS 膨胀与回收抖动。但两者把优化重点放在了不同位置:tcmalloc 更激进地把热路径推到 per-CPU,jemalloc 则把 arena、extent、decay 和 profiling 做成了一套更完整的内存治理工具箱。
你的服务在线上跑了三天,RSS 从 2GB 涨到了 6GB,free 显示内存快爆了,但业务量没变。你重启'修好了',然后下周又涨回去。问题不在你的代码里——问题在 malloc 里。
分配器的 micro-benchmark 全是骗人的。真正的差距在碎片率和尾延迟。我们把四个分配器塞进一个真实的 HTTP 服务器,跑 24 小时,看谁先崩。