在linux查看内存用量时肯定要用到free命令,命令的使用简单,而显示结果的需要解释一下:
查看系统上的物理内存和swap分区的使用情况,默认单位是字节,-m以M为单位显
tocal总大小
buffer和cached,缓冲和缓存
用池来缓冲大河对小河的冲击,这个池就是缓冲,目的是为了速率不平衡的设备传递信息用的。
一个设备送数据特别慢,另一个设备拿特别快,找一个池子把经常的数据先放到池子里,用的时候能够快速的拿,缓存的目的是数据的重复使用。
在操作系统当中我们可以把buffer理解成为里面存储的是元数据,比如当我们访问的是/var/log/message的时候,先从根开始查找比较麻烦,为了下一次用的时候比较快速,就可以把第一次找到的元数据先放到buffer当中,那么下一次使用的时候就可以直接从buffer里面得到目标文件的地址不用从根开始查找了。cached就是第一次查找完数据就放到到内存当中,等到下一次用的时候不用再去硬盘当中去调用,直接在内存当中进行调用即可,这两段空间完成可以清除,是为了加速性能存在的。
好了,下面我们解释一下上图的的意思,total指的是总大小,used指的是已经使用的空间,但是请注意,这里说的已经使用的空间是真正已经使用的空间和可以被清除的buffer和cache的空间,也就是说这段空间内包括了buffer和cache的空间,但是我们在上面提到过,buffer和cache是可以被清除的,因而不能作数,所以,虽然明面上已经使用了416M,但是要减去53(buffer)和(cache)195才是真正的已经使用的空间:416-53-195=168M,那么168就是实际上真正已经使用的空间,其实是这个168就是第二行的166,少去的2M被损耗了呗!!
还有第三个字段是空间我多少,上图中显示是3648,但是这3400是不包括buffer和cache的,所以当把buffer和cahe清除了之后,真正的空闲空间还有:3648+53+195=3648,约等于3649呗。
最后一行,显示swap没有用,这才是最好的结果,因为linux只有物理内存够用,就不会使用swap分区,所以没有使用就说明物理内存足够使用。而windows则不同,windows可以一开机即使物理内存够用,也会占用虚拟内存。
下图是centos7的free命令,centos7比centos6要好看许多:
一共有4.3G,已经用了204M,还有3.7G,共享8.9M,缓存和缓存387M,可用有3.8G
free算上了缓存,而available的没有算上缓存。