小智 7
这取决于您的程序的要求。如果您的程序有更多的动态内存分配,那么您需要从可用的分配器中选择一个内存分配器,这将为您的程序产生最佳性能。
为了良好的内存管理,您至少需要满足以下要求:
一个好的内存管理器的能力可以根据(至少)其检索/分配和返回/解除分配内存的效率来测试。(还有更多条件,例如缓存局部性、管理开销、VM 环境、小型或大型环境、线程环境等。)
关于tcmalloc和jemalloc有很多人做过比较。参考其中一项比较:
如果线程数较少,则 tcmalloc 在每次分配的 CPU 周期方面得分高于所有其他。jemalloc 与 tcmalloc 非常接近,但比 ptmalloc (std glibc 实现)更好。
就内存开销而言jemalloc最好,其次是ptmalloc,其次是tcmalloc。
总的来说,可以说 jemalloc 的得分高于其他。您还可以在这里阅读有关 jemalloc 的更多信息:
我只是引用了其他人完成和发布的测试,并没有亲自测试过。我希望这对您来说是一个很好的起点,并用它来测试和选择最适合您的应用程序。
tcmalloc
\ntcmalloc 是 Google 开源的内存管理库,作为 glibc malloc 的替代品。已在chrome、safari等知名软件中使用。根据官方测试报告,ptmalloc 在 2.8GHz P4 机器上(对于小对象)执行 malloc 和 free 大约需要 300 纳秒。TCMalloc 版本执行相同操作大约需要 50 纳秒。
\n
杰马洛克
\njemalloc由facebook推出,最早由freebsd的libc malloc实现。目前广泛应用于firefox和facebook服务器的各个组件中。
\n
比较
\n