只是为了好玩,我想看看ls -lR /
Linux 系统上的“缓冲”内存会发生什么变化。正如预期的那样,价值增加了。但我注意到“应用程序内存”(即“已使用”-(缓冲区+缓存))也增加了,并且在命令完成后它并没有下降。
因此,我在重新启动后再次测试它,并运行尽可能少的应用程序(以防其他应用程序正在使用内存而我没有注意到)。我记录了top -b -n 1
之前和之后的输出:
$ free -m
total used free shared buffers cached
Mem: 3879 413 3466 1 63 232
-/+ buffers/cache: 117 3762
Swap: 7059 0 7059
$ top -b -n 1
top - 19:33:36 up 11 min, 1 user, load average: 0,00, 0,02, 0,05
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0,3 us, 0,2 sy, 0,0 ni, 97,9 id, 1,5 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem: 3972908 total, 423356 used, 3549552 free, 65308 buffers
KiB Swap: 7229324 total, 0 used, 7229324 free. 238424 cached Mem
(process list omitted)
$ ls -lR /
(output omitted)
$ free -m
total used free shared buffers cached
Mem: 3879 1293 2586 1 315 252
-/+ buffers/cache: 725 3154
Swap: 7059 0 7059
$ top -b -n 1
top - 19:36:19 up 14 min, 1 user, load average: 0,33, 0,25, 0,13
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0,4 us, 2,2 sy, 0,0 ni, 95,5 id, 1,8 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem: 3972908 total, 1324492 used, 2648416 free, 322580 buffers
KiB Swap: 7229324 total, 0 used, 7229324 free. 258976 cached Mem
(process list omitted)
中的进程列表保持完全相同(当然,除了列TIME+
和top
进程本身的一些更改),表明没有进程实际上使用额外的半千兆字节内存。所以我的问题是:什么使用了这个内存,它最终会被释放吗?另外,当我长时间使用系统并频繁访问文件系统时,是否也会发生同样的情况?