當(dāng)前位置:湖南陽(yáng)光電子技術(shù)學(xué)校文章資訊顯示器維修

湖南陽(yáng)光電子技術(shù)學(xué)校 簡(jiǎn)介

學(xué)校地址:湖南省 長(zhǎng)沙市 雨花區(qū) 車(chē)站南路紅花坡路口
來(lái)校路線:長(zhǎng)沙火車(chē)站售票廳后坪,乘135路公交車(chē)到“紅花坡站”,即到.
學(xué)校電話:13807313137,13308461099
免費(fèi)電話:13807313137
值班手機(jī):(0)13807313137 楊老師
開(kāi)課時(shí)間:我校常年面向全國(guó)招生,月月開(kāi)班。每月1號(hào),16號(hào)開(kāi)學(xué)。
招生范圍:凡年滿15歲的公民,不限年齡,性別,地區(qū)。都?xì)g迎來(lái)我校學(xué)習(xí)。
食宿問(wèn)題:學(xué)校免費(fèi)住宿,免費(fèi)提供床上用品。食堂就餐,費(fèi)用自理,約12元/天。
學(xué)校官網(wǎng):www.hnygpx.net www.410014.com
專(zhuān)業(yè)介紹:歡迎查看我校專(zhuān)業(yè)課程!
收費(fèi)標(biāo)準(zhǔn):歡迎查看我校收費(fèi)標(biāo)準(zhǔn)!
在線 Q Q:您想咨詢(xún)招生情況,請(qǐng)聯(lián)系我啊·您想咨詢(xún)招生情況,請(qǐng)聯(lián)系我啊
網(wǎng)上報(bào)名:歡迎您報(bào)讀湖南陽(yáng)光電子學(xué)校!


在Linux服務(wù)器上手工釋放內(nèi)存

減小字體 增大字體 作者:佚名  來(lái)源:本站整理  發(fā)布時(shí)間:2011-05-03 11:40:34

  總有很多朋友對(duì)于Linux的內(nèi)存管理有疑問(wèn),之前一篇linux下的內(nèi)存管理方式似乎也沒(méi)能清除大家的疑慮。而在新版核心中,似乎對(duì)這個(gè)問(wèn)題提供了新的解決方法,特轉(zhuǎn)出來(lái)給大家參考一下。 后,還附上我對(duì)這方法的意見(jiàn),歡迎各位一同討論。

  當(dāng)在Linux下頻繁存取文件后,物理內(nèi)存會(huì)很快被用光,當(dāng)程序結(jié)束后,內(nèi)存不會(huì)被正常釋放,而是一直作為caching。這個(gè)問(wèn)題,貌似有不少人在問(wèn),不過(guò)都沒(méi)有看到有什么很好解決的辦法。那么我來(lái)談?wù)勥@個(gè)問(wèn)題。

  一、通常情況

  先來(lái)說(shuō)說(shuō)free命令:

  # free -m

  total used free shared buffers cached

  Mem: 249 163 86 0 10 94

  -/+ buffers/cache: 58 191

  Swap: 511 0 511

  其中:

  total 內(nèi)存總數(shù)

  used 已經(jīng)使用的內(nèi)存數(shù)

  free 空閑的內(nèi)存數(shù)

  shared 多個(gè)進(jìn)程共享的內(nèi)存總額

  buffers Buffer Cache和cached Page Cache 磁盤(pán)緩存的大小

  -buffers/cache (已用)的內(nèi)存數(shù):used - buffers - cached

  +buffers/cache(可用)的內(nèi)存數(shù):free + buffers + cached

  可用的memory=free memory+buffers+cached

  有了這個(gè)基礎(chǔ)后,可以得知,我現(xiàn)在used為163MB,free為86MB,buffer和cached分別為10MB,94MB。

  那么我們來(lái)看看,如果我執(zhí)行復(fù)制文件,內(nèi)存會(huì)發(fā)生什么變化.

  # cp -r /etc ~/test/

  # free -m

  total used free shared buffers cached

  Mem: 249 244 4 0 8 174

  -/+ buffers/cache: 62 187

  Swap: 511 0 511

  在我命令執(zhí)行結(jié)束后,used為244MB,free為4MB,buffers為8MB,cached為174MB,天吶,都被cached吃掉了。別緊張,這是為了提高文件讀取效率的做法。

  為了提高磁盤(pán)存取效率,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í)間。

  那么有人說(shuō)過(guò)段時(shí)間,linux會(huì)自動(dòng)釋放掉所用的內(nèi)存。等待一段時(shí)間后,我們使用free再來(lái)試試,看看是否有釋放?

  # free -m

  total used free shared buffers cached

  Mem: 249 244 5 0 8 174

  -/+ buffers/cache: 61 188

  Swap: 511 0 511

  似乎沒(méi)有任何變化。(實(shí)際情況下,內(nèi)存的管理還與Swap有關(guān))

  那么我能否手動(dòng)釋放掉這些內(nèi)存呢?回答是可以的!

  二、手動(dòng)釋放緩存

  /proc是一個(gè)虛擬文件系統(tǒng),我們可以通過(guò)對(duì)它的讀寫(xiě)操作做為與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)存。操作如下:

  # cat /proc/sys/vm/drop_caches

  0

  首先,/proc/sys/vm/drop_caches的值,默認(rèn)為0。

  # sync

  手動(dòng)執(zhí)行sync命令(描述:sync 命令運(yùn)行 sync 子例程。如果必須停止系統(tǒng),則運(yùn)行sync 命令以確保文件系統(tǒng)的完整性。sync 命令將所有未寫(xiě)的系統(tǒng)緩沖區(qū)寫(xiě)到磁盤(pán)中,含已修改的 i-node、已延遲的塊 I/O 和讀寫(xiě)映射文件)

  # echo 3 > /proc/sys/vm/drop_caches

  # cat /proc/sys/vm/drop_caches

  3

  將/proc/sys/vm/drop_caches值設(shè)為3

  # free -m

  total used free shared buffers cached

  Mem: 249 66 182 0 0 11

  -/+ buffers/cache: 55 194

  Swap: 511 0 511

  再來(lái)運(yùn)行free命令,會(huì)發(fā)現(xiàn)現(xiàn)在的used為66MB,free為182MB,buffers為0MB,cached為11MB。那么有效的釋放了buffer和cache。

  ◎ 有關(guān)/proc/sys/vm/drop_caches的用法在下面進(jìn)行了說(shuō)明

  /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.

  三、我的意見(jiàn)

  上述文章就長(zhǎng)期以來(lái)很多用戶對(duì)Linux內(nèi)存管理方面的疑問(wèn),給出了一個(gè)比較“直觀”的回復(fù),我更覺(jué)得有點(diǎn)像是核心開(kāi)發(fā)小組的妥協(xié)。

  對(duì)于是否需要使用這個(gè)值,或向用戶提及這個(gè)值,我是有保留意見(jiàn)的:

  1、從man可以看到,這值從2.6.16以后的核心版本才提供,也就是老版的操作系統(tǒng),如紅旗DC 5.0、RHEL 4.x之前的版本都沒(méi)有;

  2、若對(duì)于系統(tǒng)內(nèi)存是否夠用的觀察,我還是原意去看swap的使用率和si/so兩個(gè)值的大。

  用戶常見(jiàn)的疑問(wèn)是,為什么free這么小,是否關(guān)閉應(yīng)用后內(nèi)存沒(méi)有釋放?

  但實(shí)際上,我們都知道這是因?yàn)長(zhǎng)inux對(duì)內(nèi)存的管理與Windows不同,free小并不是說(shuō)內(nèi)存不夠用了,應(yīng)該看的是free的第二行 后一個(gè)值:

  -/+ buffers/cache: 58 191

  這才是系統(tǒng)可用的內(nèi)存大小。

  實(shí)際項(xiàng)目中告訴我們,如果因?yàn)槭菓?yīng)用有像內(nèi)存泄露、溢出的問(wèn)題,從swap的使用情況是可以比較快速可以判斷的,但free上面反而比較難查看。

  相反,如果在這個(gè)時(shí)候,我們告訴用戶,修改系統(tǒng)的一個(gè)值,“可以”釋放內(nèi)存,free就大了。用戶會(huì)怎么想?不會(huì)覺(jué)得操作系統(tǒng)“有問(wèn)題”嗎?

  所以說(shuō),我覺(jué)得既然核心是可以快速清空buffer或cache,也不難做到(這從上面的操作中可以明顯看到),但核心并沒(méi)有這樣做(默認(rèn)值是0),我們就不應(yīng)該隨便去改變它。

  一般情況下,應(yīng)用在系統(tǒng)上穩(wěn)定運(yùn)行了,free值也會(huì)保持在一個(gè)穩(wěn)定值的,雖然看上去可能比較小。

網(wǎng)頁(yè)說(shuō)明

    在Linux服務(wù)器上手工釋放內(nèi)存這條信息,為您提供了中國(guó) 新 全的在Linux服務(wù)器上手工釋放內(nèi)存信息,歡迎您免費(fèi)查看在Linux服務(wù)器上手工釋放內(nèi)存信息。如果您對(duì)在Linux服務(wù)器上手工釋放內(nèi)存這條消息有好的意見(jiàn)建議請(qǐng)聯(lián)系我們,讓我們一起進(jìn)步!
  • 熱門(mén)關(guān)鍵詞:CPU(355)  維修(198)  彩電(172)  故障(143)  招生(109)  職業(yè)中專(zhuān)(105)  技工學(xué)校(104)  電腦(98)  機(jī)芯(93)  開(kāi)縣(91)  學(xué)校(88)  手機(jī)(87)  首選(65)  培訓(xùn)(65)  筆記本(60)  云陽(yáng)(58)  學(xué)主板維修哪里 好(50)  學(xué)電腦硬件哪里 好(50)  檢修(50)  MTK(43)  海爾(42)  東芝(40)  三極管(38)  硬盤(pán)(36)  模式(36)  三星(35)  液晶電視(35)  Vista(33)  工廠(33)  TCL(32)  Windows(31)  技術(shù)(31)  北京(30)  電子元件(30)  彩色(29)  BIOS(27)  電路(27)  開(kāi)機(jī)(26)  win7(25)  電磁爐(25)