我正在寻找一个运行时内存调试器,它能够显示Linux上每个函数或C ++代码行的内存使用量(不仅仅是泄漏)。 我试图追踪程序内存使用量的峰值。 我使用过Valgrind和Purify,我发现没有泄漏。我预计,在该峰值之后,内存使用率会恢复到我的程序的预期水平。
感谢。
答案 0 :(得分:3)
您可以使用valgrind工具包中的massif工具。
答案 1 :(得分:1)
Memory usage analysis中的“应用程序内存分析”部分提供了一个很好的概述并指出:
答案 2 :(得分:0)
我过去曾经使用过valgrind几次,但是如果你想抓住尖峰发生的地方,我会使用下面的黑客:
1)测量尖峰的大小(假设SPIKE = 1Gb)
2)(假设你的总RAM是4Gb)运行一个不同的自定义过程,它将精确分配3Gb + 1字节,并等到你按下一个键。暂时保留
3)运行应用程序代码,查看内存分配失败的位置。由于您的可用内存现在略低于您的SPIKE,当峰值发生时,它将无法分配所请求的内存
希望有所帮助
答案 3 :(得分:0)
获取函数代码大小用法:
nm --demangle --print-size --size-sort --reverse-sort <your exec built with -g>