查看Linux服務(wù)器下的內(nèi)存使用情況 ,可以使用命令free -m。注意此命令只在Linux下有效,在FreeBSD中沒(méi)有此命令。命令如下所示:

used:已經(jīng)使用的內(nèi)存數(shù)
free:空閑的內(nèi)存數(shù)
shared:多個(gè)進(jìn)程共享的內(nèi)存總額
-buffers/cache:(已用)的內(nèi)存數(shù),即used-buffers-cached
+buffers/cache:(可用)的內(nèi)存數(shù),即free+buffers+cached
得出結(jié)論:
可用內(nèi)存的計(jì)算公式為:
可用內(nèi)存=free+buffers+cached,即2551MB+268MB+917MB=3737MB
很久以前在筆記本上用Ubuntu8.04時(shí)就覺(jué)得Linux管理內(nèi)存的機(jī)制非常優(yōu)秀,簡(jiǎn)而言之:Linux的內(nèi)存是拿來(lái)用的,而不是拿來(lái)看的。我與一個(gè)朋友探討Linux的使用情況時(shí),他問(wèn)我為什么Linux使用的內(nèi)存這么高。他機(jī)器上1GB的內(nèi)存free才232MB,而Windows XP才用了200MB不到的樣子。這其實(shí)是被Linux的free命令之表象迷惑了,Linux的內(nèi)存使用是很有講究的。還是舉例說(shuō)明,如下的free命令所顯示的是當(dāng)前內(nèi)存的使用情況,-m的意思是用M個(gè)字節(jié)來(lái)顯示內(nèi)容,我們來(lái)一起看看。

在第一部分Mem行中有如下參數(shù)。
total:內(nèi)存總數(shù),即1002MB
used:已經(jīng)使用的內(nèi)存數(shù),即769MB
free:空閑的內(nèi)存數(shù),即232MB
shared:當(dāng)前已經(jīng)廢棄不用,總是0
buffers Buffer:緩存內(nèi)存數(shù),即62MB
cached Page:緩存內(nèi)存數(shù),即421MB
其中,內(nèi)存總數(shù)與已使用內(nèi)存數(shù)和空閑內(nèi)存數(shù)的關(guān)系是:
total(1002M)=used(769M)+free(232M)
在第二部分內(nèi)容(-/+buffers/cache)中各參數(shù)如下所示。
(-buffers/cache):used內(nèi)存數(shù),即286MB(指的是第一部分Mem行中的used-buffers-cached)。
(+buffers/cache):free內(nèi)存數(shù),即715MB(指的是第一部分Mem行中的free+buffers+cached)。
可見(jiàn)-buffers/cache反映的是被程序?qū)崒?shí)在在用掉的內(nèi)存,而+buffers/cache反映的是可以挪用的內(nèi)存總數(shù)。
第三部分是指交換(swap)分區(qū),大家應(yīng)該都明白,這里就不再講了。
有可能大家看了上面的解釋還是不太明白。比如:第一部分(Mem)與第二部分(-/+buffers/cache)的結(jié)果有關(guān),used和free為什么這么奇怪?其實(shí)我們可以從兩個(gè)方面來(lái)分析。對(duì)操作系統(tǒng)來(lái)講這兩項(xiàng)是Mem的參數(shù),buffers/cached都屬于被使用,所以它認(rèn)為free只有232MB;對(duì)應(yīng)用程序來(lái)講+buffers/cached等同于可用的內(nèi)存,因?yàn)閎uffer/cached可提高程序執(zhí)行的性能,當(dāng)程序使用內(nèi)存時(shí),buffer/cached很快就會(huì)被使用。所以從應(yīng)用的角度來(lái)看,應(yīng)以(-/+buffers/cache)的free和used為主,即我們主要看與它相關(guān)的free和used就可以了。另外告訴大家一些常識(shí),為了提高磁盤(pán)和內(nèi)存的存取效率,對(duì)Linux做了很多精心的設(shè)計(jì),除了對(duì)dentry進(jìn)行緩存(用于VFS、加速文件路徑名到inode的轉(zhuǎn)換)外,還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者用于針對(duì)磁盤(pán)塊的讀寫(xiě),后者用于針對(duì)文件inode的讀寫(xiě)。這些Cache能有效地縮短I/O系統(tǒng)調(diào)用(比如read、write、getdents)的時(shí)間。
在Linux中,內(nèi)存是拿來(lái)用的,不是拿來(lái)看的。而在Windows中,無(wú)論你的真實(shí)物理內(nèi)存有多少,它都會(huì)用硬盤(pán)交換文件來(lái)讀,即使是內(nèi)存還有一大部分。這也就是Windows常常提示虛擬空間不足的原因。可以想見(jiàn),硬盤(pán)怎么會(huì)快過(guò)內(nèi)存,所以我們?cè)谟^察Linux的內(nèi)存使用情況時(shí),只要沒(méi)發(fā)現(xiàn)用swap的交換空間,就不用擔(dān)心自己的內(nèi)存太少。如果常??吹絪wap用了很多,那么你就要考慮加物理內(nèi)存了。這也是在Linux服務(wù)器上看內(nèi)存是否夠用的標(biāo)準(zhǔn)。