转自http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html
1.语法
free [-bkmotV][-s <间隔秒数>]
2.说明
显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。。free命令由procps.*.rpm提供(在Redhat系列的OS上)。free命令的所有输出值都是从/proc/meminfo中读出的。系统上可能有meminfo(2)这个函数,它就是为了解析/proc/meminfo的。procps这个包自己实现了meminfo()这个函数。
3.参数介绍
-b 以Byte为单位显示内存使用情况
-k 以KB为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-o 不显示缓冲区调节列
-s<间隔秒数> 持续观察内存使用状况
-t 显示内存总和列
-V 显示版本信息
4.输出介绍
1 2 3 4 5 6
1 total used free shared buffers cached
2 Mem: 999212 967476 31736 0 50668 223000
3 -/+ buffers/cache: 693808 305404
4 Swap: 2048276 154524 1893752
说明:Mem(第一行) 该行是从操作系统(OS)来看的。也就是说,从OS的角度来看,计算机上一共有:
1] FO[2][1] 总物理内存量 999212KB [缺省时free的单位为KB]
2] FO[2][2] 物理内存使用量 967476KB
3] FO[2][3] 物理内存可用量 31736KB
4] FO[2][4] 被几个进程共享的内存量,现在已经deprecated,其值总是0 (当然在一些系统上也可能不是0,主要取决于free命令是怎么实现的)
5] FO[2][5] 被OS buffer住的内存 (A buffer is something that has yet to be "written" to disk) 要输出的
6] FO[2][6] 表示被OS cache的内存(A cache is something that has been "raad" from the disk and stored from later use.) 为读入的
注:
1、Linux/Windows,为了提高IO read的性能,总是要多cache一些数据,这也就是为什么FO[2][6](cached memory)比较大,而FO[2][3]比较小的原因。
2、等式:FO[2][1] = FO[2][2] + FO[2][3]
buffers/cache(第二行) 该行是从一个应用程序的角度看系统内存的使用情况。
1] FO[3][1]
2] FO[3][2] 即-buffers/cache,表示一个应用程序认为系统被用掉多少内存
3] FO[3][3] 即+buffers/cache,表示一个应用程序认为系统还有多少内存
注:1、被系统cache和buffer占用的内存可以被快速回收,所以通常FO[3][3]比FO[2][3]会大很多。
2、等式: FO[3][2] = FO[2][2] - FO[2][5] - FO[2][6] FO[3][3] = FO[2][3] + FO[2][5] + FO[2][6] Swap(第四行) 该行为硬盘上交换区的使用信息。当可用内存少于额定值的时候,就会发生交换。这个值一般使用的都比较少。