Linux中free命令可以显示linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer. 在Linux系统监控的工具中,free命令是最经常使用的命令之一.
命令格式 :
free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]
命令功能 :
free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存,共享内存将被忽略.
命令参数 :
-b/-k/-m/g ==> 分别以Byte/KB/MB/GB为单位显示内存使用情况;
-l ==> 显示详细的low 和high的内存统计情况;
-o ==> 不显示缓存区(-/+ buffers/cache);
-t ==> 显示内存总和列;
-s <delay(间隔秒数)> ==> 持续观察内存使用情况;
-c<count> ==>显示更新次数;
-V ==> 显示版本信息;
free数值说明 :
total ==> 总计物理内存的大小;
used ==> 已使用内存大小;
free ==> 空闲内存大小;
shared ==> 多个进程共享的内存总额;
buffer/cached ==> 磁盘缓存的大小;
注意:
第二行(Mem)的used/free 与第三行(-/+ buffer/cache)的 used/free区别 : “使用角度”
第二行是从”OS”的角度来看,因为对于OS,buffer/cache都是属于被使用,所以它的可用内存是1235900,已用内存是686824,其中包括,内核(OS)使用+Application(应用程序)使用+buffers+cached.
第三行所指的是从“应用程序”角度来看,对于应用程序来说,buffer/cached是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收.所以从应用程序的角度来说,可用内存=系统free +buffers + cached.例如本机 : 1725388=1235932+48736+440752.
buffers与cached区别 :
cached : 高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器;
buffers : 缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间的传输数据的区域;
两者都是RAM中的数据,简单来说,buffers是即将被写入磁盘的,而cache是被从磁盘中读出来的.
buffers是由各种进程分配的,由进程和系统一起管理.被用在如输入队列等方面,一个简单的例子,如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存;
cached 经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能;
综上所述可以理解为cache系统管理,buffer由进程check系统一起管理.