我想比较一组进程动态分配的堆的最大数量。Linux中是否有任何系统命令或任何应用程序可以自动执行此操作?类似于运行进程并监视进程消耗多少内存的监视工具。
不幸的是,size(1)命令只反映进程的文本和数据内存部分,以及进程使用的平均内存的进程记帐报告。
发布于 2011-05-30 19:50:07
pmap并不坏,但它只给您一个快照,而不是最大值。
您可能想看看getrusage()。在新内核(2.6.32;不确定确切的切断)上,ru_*rss字段实际上是填充的。(在较老的内核中,它们总是被设置为零.)
还可以尝试"cat /proc//status“并查看VmPeak (它显示峰值虚拟内存使用情况)和VmHWM (它显示峰值驻留集大小)。这两者都是“高水标记”,就像它们在一个过程的一生中上升,但从未下降。如果您可以在进程终止时获取它们的快照,则可以自己收集数据。
我曾经编写过一个.so来完成这个任务;它通过修补exit()来工作(并且使用LD_PRELOAD调用它)。但这是为了工作,我没有一份副本。
发布于 2011-05-30 20:13:57
尝试使用像缬草地块这样的内存分析器。
https://stackoverflow.com/questions/6180110
复制相似问题