我正在使用系统监视器 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——它可能在两个命令输出之间发生了变化)。