Linux內(nèi)存分析與清理

文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡(jiǎn)書

1. free命令

Linux中查看內(nèi)存的命令為free,命令如下:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            62G        4.9G        627M        520K         57G         57G
Swap:          4.0G        335M        3.7G

每一列的解釋如下:

  • total:內(nèi)存總數(shù)
  • used:已經(jīng)使用的內(nèi)存數(shù)
  • free:空閑的內(nèi)存數(shù)
  • shared:當(dāng)前已經(jīng)廢棄不用
  • buffers Buffer:緩存內(nèi)存數(shù)
  • cached Page:緩存內(nèi)存數(shù)

可以看出buff/cache占用的內(nèi)存份額很大,有時(shí)候程序運(yùn)行結(jié)束后蒋失,大量?jī)?nèi)存仍位于buff/cache中,有時(shí)運(yùn)行程序會(huì)導(dǎo)致內(nèi)存不足掸读,因此需要將這部分內(nèi)存釋放出來(lái)糜颠。

2. Linux中的緩存分類

要清理Linux中的cache熊榛,首先要明白buff和cache的區(qū)別(free中的buff/cache)种樱,以及pagecache蒙袍,dentries和inodes的區(qū)別俊卤。

  • buff
    作為buffer cache的內(nèi)存,是塊設(shè)備的讀寫緩沖區(qū)

  • cache
    作為page cache的內(nèi)存左敌,文件系統(tǒng)的cache瘾蛋。Buffer cache是針對(duì)磁盤塊的緩存俐镐,也就是在沒(méi)有文件系統(tǒng)的情況下矫限,直接對(duì)磁盤進(jìn)行操作的數(shù)據(jù)會(huì)緩存到buffer cache中佩抹。

  • pagecache

頁(yè)面緩存(pagecache)可以包含磁盤塊的任何內(nèi)存映射叼风。這可以是緩沖I/O,內(nèi)存映射文件棍苹,可執(zhí)行文件的分頁(yè)區(qū)域——操作系統(tǒng)可以從文件保存在內(nèi)存中的任何內(nèi)容无宿。Page cache實(shí)際上是針對(duì)文件系統(tǒng)的,是文件的緩存枢里,在文件層面上的數(shù)據(jù)會(huì)緩存到page cache孽鸡。

  • dentries
    表示目錄的數(shù)據(jù)結(jié)構(gòu)

  • inodes
    表示文件的數(shù)據(jù)結(jié)構(gòu)

總結(jié):cached是cpu與內(nèi)存間的,buffer是內(nèi)存與磁盤間的栏豺,都是為了解決速度不對(duì)等的問(wèn)題彬碱。buffer是即將要被寫入磁盤的,而cache是被從磁盤中讀出來(lái)的奥洼。

緩存(cached)是把讀取過(guò)的數(shù)據(jù)保存起來(lái)巷疼,重新讀取時(shí)若命中(找到需要的數(shù)據(jù))就不要去讀硬盤了,若沒(méi)有命中就讀硬盤灵奖。其中的數(shù)據(jù)會(huì)根據(jù)讀取頻率進(jìn)行組織嚼沿,把最頻繁讀取的內(nèi)容放在最容易找到的位置,把不再讀的內(nèi)容不斷往后排瓷患,直至從中刪除骡尽。

緩沖(buffers)是根據(jù)磁盤的讀寫設(shè)計(jì)的,把分散的寫操作集中進(jìn)行擅编,減少磁盤碎片和硬盤的反復(fù)尋道攀细,從而提高系統(tǒng)性能。linux有一個(gè)守護(hù)進(jìn)程定期清空緩沖內(nèi)容(即寫入磁盤)沙咏,也可以通過(guò)sync命令手動(dòng)清空緩沖辨图。

3. 清理cache

/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to become free.
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 > /proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first.

/proc是一個(gè)虛擬文件系統(tǒng),我們可以通過(guò)對(duì)它的讀寫操作做為與kernel實(shí)體間進(jìn)行通信的一種手段肢藐。也就是說(shuō)可以通過(guò)修改/proc中的文件故河,來(lái)對(duì)當(dāng)前kernel的行為做出調(diào)整。那么我們可以通過(guò)調(diào)整/proc/sys/vm/drop_caches來(lái)釋放內(nèi)存吆豹。/proc/sys/vm/drop_caches中的默認(rèn)值為0鱼的,值為1時(shí)表示可以釋放pagecache緩存理盆,值為2時(shí)可以釋放pagecache和inode緩存,值為3時(shí)可以釋放pagecache, dentries和inodes緩存凑阶。當(dāng)然在釋放內(nèi)存之前需要執(zhí)行sync命令猿规。

sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches

參考資料

1.http://www.linuxde.net/2011/07/402.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宙橱,隨后出現(xiàn)的幾起案子姨俩,更是在濱河造成了極大的恐慌,老刑警劉巖师郑,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件环葵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡宝冕,警方通過(guò)查閱死者的電腦和手機(jī)张遭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)地梨,“玉大人菊卷,你說(shuō)我怎么就攤上這事”ζ剩” “怎么了洁闰?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)诈闺。 經(jīng)常有香客問(wèn)我渴庆,道長(zhǎng),這世上最難降的妖魔是什么雅镊? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任襟雷,我火速辦了婚禮,結(jié)果婚禮上仁烹,老公的妹妹穿的比我還像新娘耸弄。我一直安慰自己,他們只是感情好卓缰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布计呈。 她就那樣靜靜地躺著,像睡著了一般征唬。 火紅的嫁衣襯著肌膚如雪捌显。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天总寒,我揣著相機(jī)與錄音扶歪,去河邊找鬼。 笑死摄闸,一個(gè)胖子當(dāng)著我的面吹牛善镰,可吹牛的內(nèi)容都是我干的妹萨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼炫欺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼乎完!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起品洛,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤树姨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后毫别,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娃弓,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年岛宦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耍缴。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡砾肺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出防嗡,到底是詐尸還是另有隱情变汪,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布蚁趁,位于F島的核電站裙盾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏他嫡。R本人自食惡果不足惜番官,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钢属。 院中可真熱鬧徘熔,春花似錦、人聲如沸淆党。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)染乌。三九已至山孔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荷憋,已是汗流浹背台颠。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留台谊,地道東北人蓉媳。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓譬挚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親酪呻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子减宣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容