【问题标题】:Need Memory Usage Tool per C++ function on LinuxLinux 上每个 C++ 函数需要内存使用工具
【发布时间】:2010-11-12 20:19:34
【问题描述】:

我正在寻找一个运行时内存调试器,它能够在 Linux 上显示每个函数或 C++ 代码行的内存使用情况(不仅仅是泄漏)。 我正在尝试追踪程序内存使用量的峰值。 我用过 Valgrind 和 Purify,我发现没有泄漏。我预计,在那个峰值之后,内存使用量会恢复到我的程序的预期水平。

谢谢。

【问题讨论】:

    标签: c++ c linux memory-management dynamic-memory-allocation


    【解决方案1】:

    您可以使用 valgrind 工具包中的 massif 工具。

    【讨论】:

      【解决方案2】:

      Memory usage analysis 中的“应用程序内存分析”部分给出了很好的概述并指出:

      【讨论】:

        【解决方案3】:

        我过去曾多次使用 valgrind,但如果您想了解峰值发生的位置,我会使用以下 hack:

        1) 测量尖峰的大小(假设 SPIKE = 1Gb)

        2)(假设您的总内存为 4Gb)运行一个不同的自定义进程,该进程将准确分配 3Gb + 1 个字节,然后等到您按下一个键。把它搁置

        3) 运行您的应用程序代码并查看您的内存分配将失败的位置。由于你的可用内存现在比你的 SPIKE 略少,当峰值发生时,它将无法分配请求的内存

        希望对你有帮助

        【讨论】:

          【解决方案4】:

          获取函数代码大小用法:

          nm --demangle --print-size --size-sort --reverse-sort <your exec built with -g> 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-29
            • 1970-01-01
            • 1970-01-01
            • 2021-01-24
            • 1970-01-01
            • 2013-12-10
            • 2021-06-17
            • 2015-10-09
            相关资源
            最近更新 更多