在现有代码中替换新内存分配器的最佳解决方案是什么?

2023-11-21

在过去的几天里,我获得了有关标准内存分配器之外的一些信息malloc()。有一些实现似乎比malloc()对于具有多线程的应用程序。例如,似乎tcmalloc and ptmalloc有更好的性能。

我有一个使用两者的 C++ 应用程序malloc and new很多地方的运营商。我想用类似的东西替换它们ptmalloc可能会提高其性能。但我想知道如何new在 Linux 上运行的 C++ 应用程序中使用运算符时会执行什么操作?它是否使用标准行为malloc或者是其他东西?

更换的最佳方法是什么new内存分配器与代码中旧的内存分配器?有什么方法可以覆盖该行为或new and malloc或者我需要一一替换对他们的所有呼叫?


来自TCMalloc 文档:

要使用 TCmalloc,只需通过“-ltcmalloc”链接器标志将 tcmalloc 链接到您的应用程序中。 您可以通过使用 LD_PRELOAD 在您未自行编译的应用程序中使用 tcmalloc:

$ LD_PRELOAD =“/usr/lib/libtcmalloc.so”

ptmalloc 似乎很相似(但如果你在 Linux 上,你可能已经在使用它了因为它是 GNU C 库的一部分).

我希望operator new打电话malloc,但是您可以通过设置断点轻松地自行检查malloc,然后调用new。如果你的new不打电话malloc, 你可以重新定义它,这样它就可以.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在现有代码中替换新内存分配器的最佳解决方案是什么? 的相关文章

随机推荐