计算进程消耗的最大空闲存储内存

问题描述

| 我想比较一组进程动态分配的最大堆数量。 Linux或任何自动执行此操作的应用程序中是否有任何系统命令?诸如监视工具之类的东西,可以运行一个进程并监视该进程消耗了多少内存。 不幸的是,“ 0”命令仅反映流程的文本和数据存储部分,而有关流程使用的平均内存的流程记帐报告。     

解决方法

        pmap不错,但是它只为您提供快照,而不是最大值。 您可能想看看getrusage()。在较新的内核(2.6.32;不确定确切的截止日期)上,实际上已填充ru_ * rss字段。 (在较旧的内核上,它们始终设置为零...) 也尝试\“ cat / proc / / status \”并查看VmPeak(显示峰值虚拟内存使用情况)和VmHWM(显示峰值驻留集大小)。它们都是“高水位标记”,因为它们在过程的生命周期中会上升,但绝不会下降。如果可以在过程终止时获取它们的快照,则可以自己收集数据。 我曾经写过一个.so来做到这一点;它通过修补exit()起作用(您使用LD_PRELOAD调用了它)。但这是工作,我没有副本:-(。     ,        尝试使用类似valgrind massif的内存分析器。