free 命令结果详解

来自  https://foofish.net/linux-command-free.html

数据为自己在 Linux 上的测试。

free 的结果如下:



要完全理解上面3行数据,先搞明白buffer和cache是什么。

buffer:缓冲区

将数据缓冲下来,解决速度慢和快的交接问题;速度快的需要通过缓冲区将数据一点一点传给速度慢的区域。例如:从内存中将数据往硬盘中写入,并不是直接写入,而是缓冲到一定大小之后刷入硬盘中。

A buffer is something that has yet to be "written" to disk.

cache:缓存

实现数据的重复使用,速度慢的设备需要通过缓存将经常要用到的数据缓存起来,缓存下来的数据可以提供高速的传输速度给速度快的设备。例如:将硬盘中的数据读取出来放在内存的缓存区中,这样以后再次访问同一个资源,速度会快很多。

A cache is something that has been "read" from the disk and stored for later use.

buffer是用于存放将要输出到disk(块设备)的数据,而cache是存放从disk上读出的数据。二者都是为提高IO性能而设计的。

理解了buffer和cache的作用后,那么free展示的信息就易懂了,现在开始分析free命令输出的每一行代表的含义:

第一行:Mem

总共的内存 16402128 = 15784916 + 617212 = 4558104 + 11844024,used表示系统已经被使用的内存,它包括应用程序使用的内存,以及用于缓冲和缓存的内存总和。

第二行:-/+ buffers/cache

-buffers/cache:4558104 = 15784916 - 473308 - 10753504,4558104表示除去缓冲和缓存消耗的内存外,系统实际消耗的内存是4558104。

+buffers/cache:11844024 = 473308 + 10753504 + 617212,11844024 表示系统可用的内存有11844024 ,因为如果遇到内存告急的情况时,buffer和cache所占的内存还是可以用来给应用程序使用。

第三行:Swap

看到很多文章直接说不解释了,但这里我要解释一下,Swap表示交换分区,也就是我们通常所说的虚拟内存。就可以把一部分磁盘空间当做内存使用,这部分空间叫做虚拟内存,当系统内存不足时,系统会把那些还驻留在内存中但是当前没有运行的程序暂时放到虚拟内存中去。


猜你喜欢

转载自blog.csdn.net/zhouguoqionghai/article/details/78664325