free 命令分为两个版本具体区别及解释如下:
free命令的所有输出值都是从/proc/meminfo中读出的.
free -m 输出结果 (旧版)
[root@iz2zecfhh5u99sv81mxg62z ~]# free -m
total used free shared buffers cached
Mem: 3961 3830 130 1 259 220
-/+ buffers/cache: 3351 610
Swap: 0 0 0
free -m 输出结果(新版)
free -m
total used free shared buff/cache available
Mem: 992 74 660 0 257 771
Swap: 0 0 0
新版:
total : 表示系统的总内存
used : 表示应用程序已经使用的内存
free : 表示当前还没有被使用的内存
shared :表示进程共享的内存
buff/cache : 表示系统的page cache和buffer使用到的内存
available : 表示应用程序还可以申请到的内存
当前系统使用到的内存 = used + buff/cache
总内存 total = used + free + buff/cache
注:shared被包含在used内
旧版:
total : 系统的总内存
used : 应用程序已经使用的内存
free : 当前还没有被使用的内存
shared :表示进程共享的内存
buffers :用于要输出到磁盘的数据
cached :用于从磁盘读取的数据
-buffers/cache:表示一个应用程序认为系统被用掉多少内存;
+buffers/cache:表示一个应用程序认为系统还有多少内存;
-buffers/cache = used - buffers - cached
+buffers/cache = free + buffers + cached
解决buffers/cached 使用过高:
先执行sync 强制将缓存刷到磁盘
echo 3 > /proc/sys/vm/drop_caches #释放所有缓存
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
如果系统buffer&cache经常性使用高,可以crontab中定时执行来释放空间。