tcmalloc / jemalloc是改进的内存分配器,还引入了内存池以实现更好的内存分配。那么它们之间的差异以及如何在我的应用程序中选择它们呢?
答案 0 :(得分:78)
这个blog链接到所有流行的malloc的详细描述。
而this article引用了tcmalloc
和jemalloc
之间的一个重要区别,并建议选择哪一个。
this article完整地描述了jemalloc
答案 1 :(得分:3)
这取决于您的程序要求。如果您的程序有更多的动态内存分配,那么您 需要从可用的分配器中选择一个内存分配器,它将产生最佳性能 在您的程序之外。
要获得良好的内存管理,您至少需要满足以下要求:
一个好的内存管理器的能力可以根据(至少)它的检索/分配和执行效率进行测试。 返回/释放内存。 (还有更多条件,例如缓存局部性,管理开销,VM环境,大小 环境,线程环境等。)
关于tcmalloc和jemalloc,有很多人做过比较。参考其中一项 比较:
如果线程数较少,则tcmalloc在每个分配的CPU周期方面得分超过所有其他得分。 jemalloc非常接近tcmalloc,但比ptmalloc(std glibc实现)更好。
就内存开销而言,jemalloc最好,其次是ptmalloc,其次是tcmalloc。
总体而言,可以说jemalloc在其他方面得分较高。您还可以在此处阅读有关jemalloc的更多信息:
我刚刚引用了其他人进行和发布的测试,而自己还没有测试过。我希望 这对您来说可能是一个很好的起点,并用它来测试和选择最适合的 您的应用程序。