使用 gperftools 的堆分析器来分析 libc malloc

Use gperftools' heap profiler to profile libc malloc

我正在尝试分析应用程序以比较其使用不同分配策略的性能。

我在使用 tcmalloc 时可以毫无问题地分析它,但是如何使用 libc 的分配函数来分析它?事实上,启用 gperftool 的堆分析器需要使用 -ltcmalloc 标志 ¹ 但这导致 tcmalloc 被用作分配策略。

how to profile it using libc's allocation functions?

注意:这个要求有点奇怪:当您从 tcmalloc 切换到 GLIBC malloc 时,您的应用程序不会突然开始使用更多或更少的堆内存,或者更改其分配模式或位置。

来自https://gperftools.github.io/gperftools/heapprofile.html

Heap profiling requires the use of libtcmalloc. This requirement may be removed in a future version of the heap profiler, and the heap profiler separated out into its own library.

所以你可以

  • 等待 Google 开发人员删除此要求(这可能要等待几天,或者几年 -- 我不知道。实际上,它看起来像上面 github.io页面自 2012 年以来就没有更新过,所以我不会在这里屏住呼吸),或者
  • 自己贡献分离所需的代码,或者
  • 找到用 GLIBC 执行此操作的等效方法(并可能将该代码贡献给 GLIBC)。

我不知道现在有任何可用的 GLIBC 等价物。