[关闭]
@pingniu 2018-03-29T03:10:50.000000Z 字数 1068 阅读 502

free

Linux


在Linux系统中,free命令是我们检查系统内存情况(包括已使用内存、空闲内存、buffer等等)的一个有力工具,是Linux系统中最常用的命令之一。

一、命令格式和参数

free命令的格式非常简单,直接跟参数即可:
image_1c9npac6518021jjv1po51mnkkmk9.png-2.2kB

free命令的参数也比较简单,常见的有如下的几种:
1、显示内存使用情况
image_1c9npg37t4mm1ld11lirvic13gfm.png-11.8kB

2、动态显示的参数
image_1c9npoo9a1pi31613c331j5qlm9.png-7.1kB
-s N, --seconds N 每间隔N秒显示一次内存使用情况
-c N, --count N 重复显示N次内存占用情况,然后退出

3、其他参数
image_1c9npunfc74j1u141he2icv169820.png-4.4kB
显示版本信息
image_1c9npv45h26113191e3j837i812d.png-3.2kB
展示总和行(RAM+swap总和)

二、使用实例

1、显示内存的使用
image_1c9nq8ara13m06751fgp1kg51k3h19.png-56.6kB
可以看到使用不同的参数会将内存占用情况以不同的形式呈现出来,其中各个数字的意义如下:
total: 物理内存的大小,就是机器实际的内存大小;
used: 已使用的内存大小,这个值包括了cache和应用程序实际使用的内存;
free: 尚未被使用的内存大小;
shared: 共享内存的大小;
buff/cache: 被缓冲区和缓存占用的内存大小;
available: 该项是新版的free中增加的一项,表示可用内存大小。

2、动态显示
除了每次都是用free命令查看当前的内存占用外,我们还可以让该数据动态刷新,方便我们观察某段持续时间内系统性能的变化情况。
image_1c9nqgtpe60o1rstc44cl319ug1m.png-45.6kB
上图显示的数据是系统内存占用每隔一秒刷新一次,需要手动停止该命令,否则会一直执行下去。

image_1c9nrb8s0142r1tmmgo1ehp16og43.png-35kB
上图显示的是根据命令指定,只显示三次内存占用的情况,随后退出。

三、需要注意的几个值

1、avabllable的含义
available一项是在CentOS 7 之后free命令中新增加的一个数值,官方文档的解释是:
image_1c9nrkpclpnnc4m684qe17tq4g.png-25.2kB

简单理解为是系统的可用内存。我们知道,当一个应用程序需要更大的内存空间时,操作系统可以回收buffer和cache的空间以提供给应用程序使用,加上原来的free值(即空闲内存值),一起组成了可用的内存值,可以理解为:available = free + buffer + cache。

但更严谨来说,buffer 和 cache 的内存块并不是可以完全被回收的,有一部分是无法回收的,比如共享内存段、ramfs等,具体大家可以参考Linux的一些官方文档,因此更确切地说,available的计算方式就可以表示为:

available = free + buffer + cache - 不可回收的部分。

2、新旧free命令的对比
在旧的版本中,free命令下面的值是有三行的,具体如下:
image_1c9nroi1314vuoss1p1ct5t5fs6d.png-28.3kB
而新版本中,free命令的结果合并了buffer/cached作为新的一列,并且在此基础上增加了available一列,因此显得更直观一点。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注