热衷技术,热爱交流
分类: LINUX
2013-05-25 20:48:40
free命令:
oracle[~]$free -s 5 -c 4
total used free shared buffers cached
1. Mem: 1013156 943940 69216 0 48472 699168
2. -/+ buffers/cache: 196300 816856
3. Swap: 2097144 0 2097144
说明:默认上面的数值单位都是k
第一行(Mem)的total(1013156) 表示总的物理内存大小,buffers表示将要写入硬盘的缓冲数据占用的内存空间,cached表示将要被cpu处理的的缓存数据占用的内存空间。buffers和cached对于操作系统而言,是已经分配的空间了,所以这里的used=(内核使用+应用程序使用)+buffers+cached。于是,(内核使用+应用程序使用)=used-buffers-cached= 943940-48472-699168=196300。也就是说,内核和进程实际使用的内存量是196300。
很巧,第二行( -/+ buffers/cache: )中的used(196300)等于第一行中的“内核使用+应用程序使用“。难道他们相等仅仅是巧合?当然不是了,第二行名字虽然叫做” -/+ buffers/cache“,但是他这个used表示的也是”内核使用+应用程序使用“,进程在申请内存时候,实际看的就是第二行。因为,对于进程而言,第一行的buffers与cache都是可用的,也就是对于进程而言,free(可用空间)=total(Mem中的)-used(-/+ buffers/cache中的)=1013156-196300=free(第一行中的)+buffers+cached= 69216+48472+699168= 816856
第三行,交换分区,暂时不做记录了。