【问题标题】:Use gperftools' heap profiler to profile libc malloc使用 gperftools 的堆分析器来分析 libc malloc
【发布时间】:2018-11-05 05:22:00
【问题描述】:

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

我在使用 tcmalloc 时可以毫无问题地对其进行分析,但是如何使用 libc 的分配函数对其进行分析?实际上,启用 gperftool 的堆分析器需要使用 -ltcmalloc flag¹ 但这会导致 tcmalloc 被用作分配策略。

【问题讨论】:

    标签: c++ malloc libc tcmalloc gperftools


    【解决方案1】:

    如何使用 libc 的分配函数对其进行分析?

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

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

    堆分析需要使用 libtcmalloc。在堆分析器的未来版本中可能会删除此要求,并将堆分析器分离到自己的库中。

    所以你可以

    • 等待谷歌开发者取消这个要求(这可能是几天或几年的等待 - 我不知道。实际上,看起来上面的github.io页面自2012年以来就没有更新过,所以我不会在这里屏住呼吸),或者
    • 自己提供分离所需的代码,或
    • 找到使用 GLIBC 的等效方法(并可能将该代码贡献给 GLIBC)。

    我不知道目前有任何现有的 GLIBC 等效项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      相关资源
      最近更新 更多