闡述Linux內(nèi)存管理方式
如果我們應(yīng)用電腦時(shí),感覺(jué)特別慢,就會(huì)查看內(nèi)存的使用率。本文講解Linux內(nèi)存管理方式。舉個(gè)例子來(lái)說(shuō),為什么Linux使用的內(nèi)存這么高,1G的內(nèi)存free才232M,講win xp才用200M的內(nèi)存。如下顯示free是顯示的當(dāng)前內(nèi)存的使用。-m的意思是M字節(jié)來(lái)顯示內(nèi)容,我們來(lái)一起看看。
$ free -m
total used free shared buffers cached
Mem: 1002 769 232 0 62 421
-/+ buffers/cache: 286 715
Swap: 1153 0 1153
第一部分Mem行:
total 內(nèi)存總數(shù): 1002M
used 已經(jīng)使用的內(nèi)存數(shù): 769M
free 空閑的內(nèi)存數(shù): 232M
shared 當(dāng)前已經(jīng)廢棄不用,總是0
buffers Buffer 緩存內(nèi)存數(shù): 62M
cached Page 緩存內(nèi)存數(shù):421M
關(guān)系:total(1002M) = used(769M) + free(232M)
第二部分(-/+ buffers/cache):
(-buffers/cache) used內(nèi)存數(shù):286M (指的第一部分Mem行中的used - buffers - cached)
(+buffers/cache) free內(nèi)存數(shù): 715M (指的第一部分Mem行中的free + buffers + cached)
可見(jiàn)-buffers/cache反映的是被程序?qū)崒?shí)在在吃掉的內(nèi)存,而+buffers/cache反映的是可以挪用的內(nèi)存總數(shù)。
第三部分是指交換分區(qū), 我想不講大家都明白.
我想大家看了上面,還是很暈.第一部分(Mem)與第二部分(-/+ buffers/cache)的結(jié)果中有關(guān)used和free為什么這么奇怪.
其實(shí)我們可以從二個(gè)方面來(lái)解釋.
對(duì)操作系統(tǒng)來(lái)講是Mem的參數(shù).buffers/cached 都是屬于被使用,所以它認(rèn)為free只有232.
對(duì)應(yīng)用程序來(lái)講是(-/+ buffers/cach).buffers/cached 是等同可用的,因?yàn)閎uffer/cached是為了提高程序執(zhí)行的性能,當(dāng)程序使用內(nèi)存時(shí),buffer/cached會(huì)很快地被使用。
所以,以應(yīng)用來(lái)看看,以(-/+ buffers/cache)的free和used為主.所以我們看這個(gè)就好了.另外告訴大家一些常識(shí).Linux為了提高磁盤(pán)和內(nèi)存存取效率, 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í)間。
記住內(nèi)存是拿來(lái)用的,不是拿來(lái)看的。不象windows, 無(wú)論你的真實(shí)物理內(nèi)存有多少,他都要拿硬盤(pán)交換文件來(lái)讀。這也就是windows為什么常常提示虛擬空間不足的原因,你們想想多無(wú)聊,在內(nèi)存還有大部分的時(shí)候,拿出一部分硬盤(pán)空間來(lái)充當(dāng)內(nèi)存。硬盤(pán)怎么會(huì)快過(guò)內(nèi)存,所以我們看Linux,只要不用swap的交換空間,就不用擔(dān)心自己的內(nèi)存太少。如果常常swap用很多,可能你就要考慮加物理內(nèi)存了,這也是Linux看內(nèi)存是否夠用的標(biāo)準(zhǔn)哦。
本文介紹的Linux內(nèi)存管理方式,希望對(duì)你學(xué)習(xí)Linux有所幫助。
【編輯推薦】