gpt4 book ai didi

c - tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

转载 作者:IT老高 更新时间:2023-10-28 12:35:01 25 4
gpt4 key购买 nike

tcmalloc/jemalloc 是改进的内存分配器,还引入了内存池以实现更好的内存分配。那么它们之间有什么区别以及如何在我的应用程序中选择它们呢?

最佳答案

这取决于您的程序的要求。如果你的程序有更多的动态内存分配,那么你需要从可用的分配器中选择一个内存分配器,这将产生最佳的性能退出你的程序。

要获得良好的内存管理,您至少需要满足以下要求:

  1. 检查您的系统是否有足够的内存来处理数据。
  2. 你会从可用内存中分配吗?
  3. 将使用的内存/释放的内存返回到池(程序或操作系统)

一个好的内存管理器的能力可以根据(至少)它在检索/分配和分配方面的效率来测试返回/删除内存。 (还有更多条件,例如缓存位置、管理开销、VM 环境、小型或大型环境、线程环境等。)

关于 tcmalloc 和 jemalloc 有很多人做过比较。引用其中一个比较:

http://ithare.com/testing-memory-allocators-ptmalloc2-tcmalloc-hoard-jemalloc-while-trying-to-simulate-real-world-loads/

如果线程数较少,tcmalloc 在每次分配的 CPU 周期方面得分高于所有其他分数。jemalloc 非常接近 tcmalloc 但比 ptmalloc (std glibc 实现) 更好。

在内存开销方面jemalloc最好,其次是ptmalloc,其次是tcmalloc。

总的来说可以说jemalloc的得分高于其他人。您还可以在此处阅读有关 jemalloc 的更多信息:

https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919

我刚刚引用了其他人完成和发布的测试,我自己没有测试过。我希望这对您来说可能是一个很好的起点,并使用它来测试和选择最适合的你的申请。

关于c - tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com