在Linux系統(tǒng)下,我們一般不需要去釋放內(nèi)存,因?yàn)橄到y(tǒng)已經(jīng)將內(nèi)存管理的很好。但是凡事也有例外,有的時(shí)候內(nèi)存會(huì)被緩存占用掉,導(dǎo)致系統(tǒng)使用SWAP空間影響性能,此時(shí)就需要執(zhí)行釋放內(nèi)存(清理緩存)的操作了。
Linux系統(tǒng)的緩存機(jī)制是相當(dāng)先進(jìn)的,他會(huì)針對(duì)dentry(用于VFS,加速文件路徑名到inode的轉(zhuǎn)換)、Buffer Cache(針對(duì)磁盤(pán)塊的讀寫(xiě))和Page Cache(針對(duì)文件inode的讀寫(xiě))進(jìn)行緩存操作。但是在進(jìn)行了大量文件操作之后,緩存會(huì)把內(nèi)存資源基本用光。但實(shí)際上我們文件操作已經(jīng)完成,這部分緩存已經(jīng)用不到了。這個(gè)時(shí)候,我們難道只能眼睜睜的看著緩存把內(nèi)存空間占據(jù)掉么?
所以,我們還是有必要來(lái)手動(dòng)進(jìn)行Linux下釋放內(nèi)存的操作,其實(shí)也就是釋放緩存的操作了。
要達(dá)到釋放緩存的目的,我們首先需要了解下關(guān)鍵的配置文件/proc/sys/vm/drop_caches。這個(gè)文件中記錄了緩存釋放的參數(shù),默認(rèn)值為0,也就是不釋放緩存。他的值可以為0~3之間的任意數(shù)字,代表著不同的含義:
0 – 不釋放
1 – 釋放頁(yè)緩存
2 – 釋放dentries和inodes
3 – 釋放所有緩存
知道了參數(shù)后,我們就可以根據(jù)我們的需要,使用下面的指令來(lái)進(jìn)行操作。
首先我們需要使用 sync 指令,將所有未寫(xiě)的系統(tǒng)緩沖區(qū)寫(xiě)到磁盤(pán)中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫(xiě)映射文件。否則在釋放緩存的過(guò)程中,可能會(huì)丟失未保存的文件。
#sync
接下來(lái),我們需要將需要的參數(shù)寫(xiě)進(jìn)/proc/sys/vm/drop_caches文件中,比如我們需要釋放所有緩存,就輸入下面的命令:
#echo 3 > /proc/sys/vm/drop_caches
此指令輸入后會(huì)立即生效,可以查詢現(xiàn)在的可用內(nèi)存明顯的變多了。
要查詢當(dāng)前緩存釋放的參數(shù),可以輸入下面的指令:
#cat /proc/sys/vm/drop_caches
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
