了解软件如何在系统中累积内存

时间:2016-10-26 10:38:14

标签: memory memory-management memory-leaks

最近我一直试图理解并追踪我的软件中令人讨厌的内存泄漏。为此,我开始长时间监视内存使用情况,以确定是否有任何模式可以作为理解此问题的线索。

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

Memory accumulation

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

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

%Mem与虚拟内存使用之间没有明确的相关性。任何人都可以帮我理解这个吗?

1 个答案:

答案 0 :(得分:0)

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

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

enter image description here