2011-05-30 113 views
2

我想比较一组进程动态分配的堆的最大数量。 Linux中是否有任何系统命令或任何自动执行此操作的应用程序?就像一个运行进程并监视进程消耗多少内存的监视工具。计算进程消耗的最大空闲存储内存

不幸的是,size(1)命令只反映了文本数据的进程使用的平均内存的程序和过程会计报告存储器部分。

+0

嗯,你的意思是不是'其他top'? – 2011-05-30 19:40:07

+0

我怎么知道的最大内存使用量通过使用top的进程?请继续关注内存使用情况值? – Pirooz 2011-05-30 19:48:15

回答

1

pmap不错,但它只给你一个快照,不是最大值。你可能想看看getrusage()。在新ish内核(2.6.32;不确定确切的截止),ru_ * rss字段实际上是填充的。 (在旧版本的内核,他们总是被置为零......)

也可以尝试“执行cat/proc/<PID> /状态”,并在VmPeak(显示了峰值虚拟内存使用量)和VmHWM看(这表明高峰常住组大小)。这些都是“高水位”,就像它们在一个过程中一直上升一样,但从不下降。如果您可以在流程终止时抓取它们的快照,则可以自己收集数据。

我曾经写过一个.so做到这一点;它通过修补exit()(并且你使用LD_PRELOAD调用它)来工作。但它的工作和我没有副本:-(。