【问题标题】:Calculating the maximum free store memory consumed by a process计算进程消耗的最大空闲存储内存
【发布时间】:2011-09-05 00:36:09
【问题描述】:

我想比较一组进程动态分配的最大堆数。 Linux 中是否有任何系统命令或任何自动执行此操作的应用程序?类似于运行进程并监视进程消耗了多少内存的监控工具。

不幸的是,size(1) 命令仅反映进程的 textdata 内存部分,并且进程记帐报告有关进程使用的平均内存。

【问题讨论】:

  • 嗯,你的意思不是top
  • 如何知道一个进程使用top的最大内存使用量?继续关注内存使用值?

标签: linux unix memory-management


【解决方案1】:

pmap 还不错,但它只给你一个快照,而不是最大值。

您可能想看看getrusage()。在新的内核(2.6.32;不确定确切的截止值)上,实际上填充了 ru_*rss 字段。 (在较旧的内核上,它们总是被设置为零......)

还可以尝试“cat /proc//status”并查看 VmPeak(显示峰值虚拟内存使用量)和 VmHWM(显示峰值驻留集大小)。这些都是“高水位标记”,因为它们在一个过程的生命周期中上升但从未下降。如果您可以在进程终止时获取它们的快照,则可以自己收集数据。

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

【讨论】:

    【解决方案2】:

    尝试使用像 valgrind massif 这样的内存分析器。

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 2022-08-10
      • 2022-06-14
      相关资源
      最近更新 更多