Linux下釋放記憶體的方法

來源:互聯網
上載者:User
釋放緩衝原因:有些單位自動檢測記憶體,當記憶體使用量率在90%以上時,會警示;               當記憶體被緩衝佔滿時,當處理一些新資訊時就會使用Swap,影響效能。 Linux的緩衝機制:Linux會針對dentry(用於VFS,加速檔案路徑名到inode的轉換)、Buffer
Cache(針對磁碟塊的讀寫)和Page Cache(針對檔案inode的讀寫)進行快取作業。 操作步驟:1、查詢當前記憶體使用量情況和釋放緩衝的參數#free -m#cat /proc/sys/vm/drop_caches2、使用sync命令,將系統緩衝區中的髒資料寫入磁碟中,包括已修改的i-node、已延遲的塊I/O和讀寫對應檔。#sync3、設定檔/proc/sys/vm/drop_caches中記錄了緩衝釋放的參數,含義:預設0—不釋放,1—釋放pagecache,2—釋放dentries和inodes,3—釋放所有緩衝#echo 3 > /proc/sys/vm/drop_caches

使用Linux會發現一個很奇怪的問題:使用一段時間後(特別是經過了檔案的拷貝等操作),用top指令發現記憶體基本上被佔用了,而且Linux不會釋放,這個問題的確困擾了我們,我們就開始尋找手動釋放記憶體的方法,的確也找到了,也就產生了我的上一篇部落格。上網搜尋也發現很多人存在著這個問題,但是經過對網上結果和我自己理解的綜合分析得出了一個結論:Linux手動釋放記憶體是一個徹徹底底的偽命題。 首先講解一下top的每個選項的含義:total:所有應用程式可用實體記憶體 free:未被應用程式使用的記憶體 used: 已使用記憶體 total=free+used 
shared: 被共用庫所佔用的共用記憶體 buffers: 用於檔案緩衝的記憶體 cached:核心緩衝虛擬記憶體 shared,buffers,cached均包含在used中。 實際上核心結束一個程式後,它是會釋放記憶體的,但是核心並沒有立刻將這部分收集到free當中,而是存在在cached或者buffer當中,提高系統的io效率,cache和buffered的記憶體是由核心進行動態組態管理,如果系統的free大小不夠的時候,系統會自動釋放cache buffer的記憶體給程式使用。(因此如果是看到used很多,來手動釋放記憶體其實是不需要的) 也就是說Linux會儘可能多的使用記憶體來提升系統的速度和io效率,但是它有相應的機制來釋放記憶體,其實我們可以簡單的理解cache和buffer也是free的空間。什麼時候代表你的記憶體是不夠的呢:就是used很多,但是cache和buffer占的比例很小,說明記憶體不夠了。看到很多網友說看到used佔了很多,free很少不爽,簡單的心理:free的記憶體越多看著越快樂??是嗎??那可以建議gnu讓free的記憶體顯示為cached和buffer的總和,相信網友肯定滿意了。送各位一句話:Linux的記憶體是用來用的,windows的記憶體是用來看的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.