如何分析C程序的内存使用情况

时间:2009-12-15 09:30:42

标签: c memory-management

我需要弄清楚我正在运行的linux程序的哪个部分,占用了多少(百分比或绝对值)内存。我需要创建一个包含多个此类程序的配置文件,以便我可以在代码中识别出一些较大的内存使用者,并查看是否可以优化它们以减少使用。 我需要它在MIPS平台上,不幸的是,Valgrind不适用于MIPS。

非常感谢任何帮助/指示。

4 个答案:

答案 0 :(得分:8)

除了Valgrind之外,还有很多其他的内存调试器/分析器。以下所有内容似乎都支持MIPS(但我没有在该架构上尝试过它们):

jemallocCCMALLOCmpatrolNJAMDDmalloc,甚至Google自己的google-perftools

答案 1 :(得分:6)

您可以使用自己的函数将所有调用包装到freemalloc,您也可以在其中提供每个分配的文件和行号。从这些信息中可以很容易地看出在哪里使用了什么内存。

答案 2 :(得分:4)

答案 3 :(得分:1)

内存消耗不应受底层处理器体系结构的大量影响,因此您可以在x86 Linux上进行内存分析。是的,内存的绝对数量可能受到影响,但是当你看起来更多的是相对而不是绝对数字时,这应该有效。

也就是说,如果Linux x86版本不仅仅是重新编译,那么这个解决方案不太可能成为一种选择。