使用 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 等价物。
我正在尝试分析应用程序以比较其使用不同分配策略的性能。
我在使用 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 等价物。