add by zhj:如果free輸出有available項,那直接看這項就可以了,它表示可用內存的大小。如果沒有available,那
可用內存是多少呢,可以參考下面free命令的第二行中的free項:715M,這個比實際可用內存要大一些,因為它是用
第一行的free + buffers + cached,而buffers和cached雖然大部分都可以釋放(即當其它應用程序需要內存的時候,
這部分內存可以自動釋放),但其中也有一小部分是不能釋放的,所以available內存是略小於free + buffers + cached的。
其實有一個命令可以查看available內存的大小,cat /proc/meminfo,牛逼了。如下,可以看到它的值比free第二行中的free
項略小
hi@ubuntu-desk:learn_lib$ cat /proc/meminfo | grep -i available MemAvailable: 1393624 kB hi@ubuntu-desk:learn_lib$ hi@ubuntu-desk:learn_lib$ free total used free shared buffers cached Mem: 5169148 4294168 874980 180336 61852 744484 -/+ buffers/cache: 3487832 1681316 Swap: 5826556 256 5826300 hi@ubuntu-desk:learn_lib$
原文:http://liustb.blog.163.com/blog/static/1337080192011718112434416/
free命令用來查看內存的使用情況,與Top命令相比,開銷較小。要說明的是,不同的發行版的free輸出是不一樣的,下面是
ubuntu 14.04的輸出。
$free –m
total used free shared buffers cached
Mem: 1002 769 232 0 62 421
-/+ buffers/cache 286 715
Swap 1153 0 1153
說明:在理解free命令的輸出項的時候,要區分兩個概念:第一行(mem),是針對操作系統來說的,而對操作系統來說buffer和cache都是屬於被使用了的內存。第二行(-/+ buffers/cache)是針對應用程序來說的,而對應用程序來說,buffer和cache都屬於可以使用的內存。
所以:
第一行(mem):
total:表示系統可使用的物理內存的總量為1002;
used表示已經被分配的內存為769,具體包括真正已經被使用掉的buffer和cache內存286,未使用的buffer內存62,未使用的cache內存421,即769 = 62 + 421 + 286;
free:表示未分配的物理內存為232;
buffers:已經被系統分配而未使用的buffer內存62;
cached:已經被分配而未使用的cache內存421;
第二行(-/+ buffers/cache);
used:已經被應用程序真正使用掉的buffer和cache內存為286;
free:可以被應用程序使用的內存為715,其中包括:已經分配而未使用的buffer內存62,已經分配而未使用的cache內存421,還沒有被分配的內存232,即: 715 = 62 + 421 + 232;
另:linux中buffer與cache的區別:
buffer:要寫到硬盤上去的數據內存;
cache:讀取到內存中的數據內存;