我很难理解 . 报告的内存使用情况top
。内存摘要部分列出了以下内容。中的所有数字MiB
。
MiB Mem : 31884.1 total, 13562.7 free, 7881.9 used, 10439.4 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 22665.9 avail Mem
但是,当我对列值求和时RES
,它们的总和并没有达到used
摘要中报告的值。的总和RES
是15225.7
.这是used
的双重值7881.9
。如果我加上used
和buff/cache
,我就得到了18321.3
。所以,现在used
和的总和buff/cache
大于 的总和RES
。
更多发现:
- 注意到
top
内存摘要几乎与free
.以下是free -m
输出。
total used free shared buff/cache available
Mem: 31884 7881 13555 886 10446 22658
Swap: 2047 0 2047
正如您所看到的,used
、free
、buff/cache
、 以及available
都具有几乎相同的值。
当我从
free
输出中添加字段used
、shared
和时buff/cache
,我得到了19213
。这又不仅仅是RES
求和!然而,这是预期的,因为我们一致认为free
和的输出top
从摘要的角度来看是匹配的。我期望
RES
总和(来自top
)将等于/接近used
、shared
和buff/cache
(来自free
)的总和,因为top
文档列出了私有和共享部分中每个进程的内存因素。
RES - anything occupying physical memory which, beginning with Linux-4.5, is the sum of the following three fields: RSan - quadrant 1 pages, which include any former quadrant 3 pages if modified RSfd - quadrant 3 and quadrant 4 pages RSsh - quadrant 2 pages
- 每当我清除系统缓存时,
RES
总和总是大于预期总和。这就是我清除系统缓存的方法:sudo sync && sudo sysctl -w vm.drop_caches=1
。有趣的是,RES
总和上升到18175.2
!以下是top
清除缓存后的内存摘要。正如预期的那样,您可以注意到 显着下降buff/cache
。然而,我没想到used
领域会显着增加!输出中used
、shared
、 和的总和为。这比总和少了大约 5 GiB!buff/cache
free
13533
RES
MiB Mem : 31884.1 total, 19358.2 free, 8795.6 used, 3730.2 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 21626.5 avail Mem
- 尝试过,这些值与、或 的总和
smem
都不匹配!top
free
RES
我无法理解这些数字!而且我不知道,作为一个软件应用程序,我编写的应用程序实际上需要多少内存,并且如果我遇到内存问题,将无法调查内存问题!我完全迷失在这里了。如果有人可以阐明正在发生的事情,我们将不胜感激!
我查看了其他问题,但实际上没有解决该问题。喜欢:为什么“top”中的内存使用量没有累加?。这个幸运的是他们的号码检查得很好。 ..等等,但仍然没有找到明确的答案!
也看了这个:为什么 top 命令中的总 RES 与已用内存不匹配?[重复]这个也没有(正确确定Linux中的内存使用情况) 回答问题。