4

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

谢谢。

4

4 回答 4

3

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

于 2010-11-12T20:34:55.467 回答
1

内存使用分析中的“应用程序内存分析”部分提供了一个很好的概述并指出:

于 2010-11-12T20:35:57.090 回答
0

我过去使用过 valgrind 几次,但如果你想知道尖峰发生的地方,我会使用以下技巧:

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

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

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

希望能帮助到你

于 2010-11-12T20:34:12.417 回答
0

要获取功能代码大小使用情况:

nm --demangle --print-size --size-sort --reverse-sort <your exec built with -g> 
于 2013-08-15T00:19:09.560 回答