[oracle@HadoopNameNode u01]$ free -m
total used free shared buffers cached
Mem: 7762 7612 150 0 333 6466
-/+ buffers/cache: 812 6950
Swap: 23999 15 23984


Mem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap: 表示硬盘上交换分区的使用情况,这里我们不去关心。


第1行
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用 到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。buffer 与cache 的区别见后面。
total = used + free

第2行
used:也就是第一行中的used - buffers-cached 也是实际使用的内存总量。
free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
free 2= buffers1 + cached1 + free1 //free2为第二行、buffers1等为第一行

buffer 与cache 的区别
A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use
从应用程序角度来 看,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。所以从应用程序的角度来说,可用内存=系统freememory+buffers+cached.
buffers是指用来给块设备 做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给流设备 比如文件 做缓冲。
也就是说:buffers是用来存储目录里面有什么内容,权限等等。

而cached直接用来记忆我们打开的文件

---------------------------------------------
语法: free [-bkmotV][-s <间隔秒数>]

补充说 明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

参数:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。