考虑进程消耗的内存的策略是什么?例如,我有一个程序,在旧版本中,它的内存使用不是最理想的,并且没有在正确的时间释放,这意味着它持有分配的时间比它应该的要长。请注意,我并不是说它泄露了。新版本的程序修改了算法,现在内存在程序的生命周期中被更快地释放。怎么能追踪到这个?想到的一些方法是:编写一个包装 libc/libstdc++ 的 malloc/new 替换库,以某种方式使用 valgrind 来完成它,或者使用 ps 对进程使用的内存进行采样并绘制图表?
问问题
246 次
2 回答
6
如果您不想使用第三方(有一些来自 AMD、Intel、valgrind 应该有“massif”工具),您可以查看 Mtrace。
几乎完成了您计划的内存分配。
我宁愿推荐你使用 valgrinds massif 工具,它没有像样的 gui/graph,但显示 procentuals 相当准确
于 2012-09-25T14:09:29.787 回答
2
在使用 ps 分析所使用的内存之前......请参阅这个很棒的软问题:如何测量应用程序或进程的实际内存使用情况?
但是只要你对 ps 的限制没问题,你可以使用 crontab 创建一个每 N 秒/分钟运行一次的作业……将结果附加ps aux
到文件中……然后你可以使用电子表格软件来绘制随着时间的推移记忆的结果。
过去我已经成功地做到了这一点。
然而,Valgrind 可能是一个更好的选择:http: //valgrind.org/docs/manual/quick-start.html
你可以用这个做一些非常相似的事情。
于 2012-09-25T14:13:20.113 回答