考虑以下:
$ dmesg | grep 'Memory:'
[ 0.000000] Memory: 8009456K/8272776K available (8474K kernel code, 1293K rwdata, 3984K rodata, 1488K init, 1316K bss, 263320K reserved, 0K cma-reserved)
实际上,这表明在引导系统中有 8009456K 可用于任务(减去保留的东西)。但是,开机后free
报告vmstat
一些很奇怪的东西
$ free -k ; vmstat -s | head -n 1
total used free shared buff/cache available
Mem: 8059880 2774996 2667600 394196 2617284 4529964
Swap: 1048572 412 1048160
8059880 K total memory
奇怪的是,一个已经启动的系统有更多的可用内存,这在逻辑上似乎与人们期望的相反——在启动时运行的进程应该更少,因此应该有更多的总可用内存可用。这怎么解释?
在引导期间,以及在您提取的 dmseg 行之后的阶段,通常会释放一些内存。让我们从我的电脑上看一个例子:
首先,我们稍微更改一下 dmesg 提取命令(已编辑):
请注意上面在摘要行之后释放的内存。将它们全部加起来我得到我应该总共有 15869556。现在让我们使用相同的命令进行检查:
请注意,预期总数完全等于实际总数。