内存消耗的计算方法

4
什么是处理进程所消耗的内存的策略?例如,我有一个程序,在旧版本中其内存使用不够优化,没有在正确的时间释放,这意味着它比应该更长时间地保留分配。请注意,我并不是说它泄漏了内存。新版本的程序修订了算法,现在内存更早地在程序的生命周期内释放。如何跟踪此过程?一些方法包括:编写一个malloc/new替换库来包装libc/libstdc ++,以某种方式使用valgrind进行操作,或者使用ps对进程使用的内存进行抽样并绘制图形。

2
“你说要使用Valgrind采样内存并绘制图形?”(http://valgrind.org/docs/manual/ms-manual.html#ms-manual.theoutputgraph) - BoBTFish
2个回答

6

如果您不想使用第三方工具(例如来自AMD、Intel的工具,valgrind应该有“massif”工具),您可以看一下Mtrace

Mtrace几乎实现了您对内存分配所规划的所有功能。

我更推荐您使用valgrinds massif工具,虽然它没有像样的GUI/图形界面,但显示比例相当准确。


2
在使用ps分析内存使用之前,请参考这个很棒的stackoverflow问题:如何测量应用程序或进程的实际内存使用情况?
但只要你能接受ps的限制,你可以使用crontab创建一个每N秒/分钟运行的作业...将ps aux的结果追加到一个文件中...然后你可以使用电子表格软件绘制内存随时间变化的结果。
我过去做过这样的事情,并获得了成功。
不过,Valgrind可能是更好的选择:http://valgrind.org/docs/manual/quick-start.html
你可以使用类似的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接