free是一个可以为我们提供linux机器可用RAM(内存)很有价值的一个常用命令,很多linux新手或者运维人员会误解它,让我们一起来揭开它的神秘面纱吧!

free的输出结果如下,默认表示这些数字都是以KB为单位的,如果想输出可读的可以加上-h 、-m等参数
[dev@DC-dev-datanode-01 ~]$ free
total used free shared buffers cached
Mem: 16467080 10999040 5468040 544 231280 646008
-/+ buffers/cache: 10121752 6345328
Swap: 0 0 0
1.Mem 解析
对应的数值 | 参数名称 | 含义 |
---|---|---|
16467080 | total | 当前机器总共可用的内存数,由于使用了-m 参数,所以该数值是以MB为单位 |
10999040 | used | 已经被使用的内存,包含buffers和cached |
5468040 | free | 空余的内存 |
544 | shared | 表示多个进程共享内存 |
231280 | buffers | 在linux系统中为不同应用缓冲数据所使用的内存数 |
646008 | cached | 为将来快速访问为目的而缓存数据使用的空间 |
buffers 与cached的区别?
buffers:是存储特定应用程序数据的临时位置,任何其他应用程序都不会使用此数据。类似于带宽,当您尝试通过
网络发送大量数据时,如果您得带宽很小,只能发送很少的数据时,系统会将这些还未发送的数据保存在buffer里面,
以便可以以较低的速度不断的发送数据。
cached:是存储常用的数据以便更快访问的位置。
不同点:cache里面的数据可以多次使用,而buffer是一次性的。
相同点:两者都是临时存储,用于数据处理。
2.-/+ buffers/cache 解析
对应的数值 | 参数名称 | 含义 |
---|---|---|
10121752 | - buffers/cache | 真实被系统或应用程序所使用的内存,计算公式:used - (buffers + cache),10999040 - 231280 - 646008= 10121752 |
6345328 | + buffers/cache | 真实可以使用的内存,计算公式:total - (上面真实被使用掉的内存),16467080- 10121752 = 6345328 |
tips:
1.为什么在Mem:那一行中的used 显示的是10999040呢?是因为linux 把cached 和buffered 内存也统计到里面去了,当时将来如果任何应用程序想使用内存,linux将为您释放掉cached和buffered。
2.不要抱怨linux占用了您太多的内存,这是误解free 这个老铁了,如果有人问您现在服务器可用的内存是多少时,您应该说6345328 kb而不是第一行的10999040 kb。
3.Swap 解析
Swap 行标识交换详细信息,如swap的总大小,已经使用的swap大小和空闲的swap空间,Swap是在磁盘上创建的虚拟内存,可虚拟增加内存大小。