占内存消耗

时间:2012-09-25 14:03:13

标签: c++ c linux

考虑流程消耗的内存的策略是什么?例如,我有一个程序,在旧版本中,它对内存的使用不是最理想的,并且它没有在正确的时间发布,这意味着它保留了比它应该的更长的分配。请注意,我并不是说它泄露了。该程序的新版本修改了算法,现在内存在程序的生命周期中更早发布。怎么跟踪这个?想到的一些方法是:编写一个包含libc / libstdc ++的malloc / new替换库,以某种方式使用valgrind来执行它或使用ps对流程使用的内存进行采样并绘制图形?

2 个答案:

答案 0 :(得分:6)

如果您不想使用第三方(有一些来自AMD,英特尔,valgrind应该有“massif”工具),您可以查看 Mtrace

几乎完全按计划进行内存分配。

我宁愿建议你使用valgrinds massif工具,它没有一个像样的gui / graph但是显示了非常准确的

答案 1 :(得分:2)

在使用ps分析所使用的内存之前...请参阅这个非常棒的问题:How to measure actual memory usage of an application or process?

但只要您对ps的限制没有问题,就可以使用crontab创建一个每N秒/分钟运行一次的作业...将ps aux的结果附加到文件中......然后您可以使用电子表格软件绘制内存随时间的结果。

我过去曾成功做过这件事。

然而,Valgrind可能是一个更好的选择:http://valgrind.org/docs/manual/quick-start.html

你可以做一些与此非常相似的事情。