系统监视器中的内存使用情况报告和免费的有什么区别?

Gui*_*oté 15 memory-usage

我正在使用系统监视器 2.28.0。当我查看“资源”选项卡时,我看到了一个用于内存和交换的漂亮图表。内存约为 3.8 的 2.3 GiB 的 60%。当我免费输入命令时,我得到:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860
Run Code Online (Sandbox Code Playgroud)

cat /proc/meminfo | grep 内存免费赠送

MemFree:           34536 kB
Run Code Online (Sandbox Code Playgroud)

这种情况持续了几分钟。我用脚本启动了很多进程,脚本正在等待空闲内存变低。根据我在“进程”选项卡(或顶部)中看到的内容,系统监视器中的数字似乎与 free 报告的进程的总内存非常接近。

谢谢

Kee*_*ook 17

区别在于“缓冲区”和“缓存”内存是否包含在“已使用”计数中。

通常,内核使用 Linux 系统内存有两个目的:进程和文件/网络缓存/缓冲区。如果您仔细查看 的输出free,它已经显示:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860
Run Code Online (Sandbox Code Playgroud)

如果添加“缓冲区”和“缓存”,然后从“使用”列中减去它,您将得到“使用”下的第二行(以 开头的行-/+ buffers/cache),显示大约 2.3G (2384512) in使用,它与系统监视器报告的正在使用的报告内存相匹配(它忽略缓冲区/缓存,因为它们将消失以便为更多进程腾出空间)。

您针对的 grep/proc/meminfo实际上与第一行的“空闲”列匹配(32512 足够接近 34536——它可能在两个命令输出之间发生了变化)。