【问题标题】:Understanding how software accumulates memory in system了解软件如何在系统中积累内存
【发布时间】:2016-10-26 10:38:14
【问题描述】:

最近我一直在尝试了解和追踪我的软件中的严重内存泄漏。为此,我开始长时间监控内存使用情况,试图找出是否有任何模式可以作为理解这个问题的线索。

在下图中,虚拟内存以紫色绘制,CPU 内存百分比以绿色绘制,x 轴以秒为单位表示时间。

激活视频流功能时会出现一些较大的峰值,但这似乎不是问题,因为软件似乎能够清除这些峰值。

在 7500 秒左右有一个很大的下降,因为系统的待机功能被激活了几秒钟。系统恢复正常后,它会清除一些之前积累的内存。到目前为止,这是有道理的。我无法理解的是,如果存储的内存量减少,为什么 %Mem 也不会减少?在这种情况下,它实际上是在增加。

%Mem 和虚拟内存使用之间没有明确的相关性。谁能帮我理解这一点?

【问题讨论】:

    标签: memory memory-management memory-leaks


    【解决方案1】:

    我意识到虚拟内存实际上与 %MEM 无关,因为它存储在硬盘驱动器中,并在进程需要时交换到 RAM。与 %MEM 相关的进程的内存是 RSS(Resident Set Size),即存储在 RAM 中的内存。

    在下一张图中,我改为监控 RSS,相关性很明显。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-05
      • 2020-09-15
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2021-08-31
      • 1970-01-01
      相关资源
      最近更新 更多