回覆列表
  • 1 # 使用者8694328357940

    1 Linux下記憶體佔用多的原因當linux第一次讀取一個檔案執行時,一份放到一片記憶體中cache起來,另一份放入執行程式的記憶體中,正常執行,當程式執行完,關閉了,cache中的那一分卻沒有釋放,第二次執行的時候,系統先看看在記憶體中是否有一地次執行時存起來的cache中的副本,如果有的話,直接從記憶體中讀取,那樣,速度就快多了。說明這種情況的很典型的例子是啟動firefox,由於firefox程式很大,因此第一次讀取執行的時候很慢,尤其在速度不快的機器上,但是當你徹底關閉了firefox,ps看不到一個firefox程序,第二次再啟動的時候就比第一次明顯快很多,這是由於這次系統是直接從cache中讀取的firefox來執行,並不是從磁碟上讀取的。再有一個例子:我們頻繁使用的ls命令等基本命令,你執行的時候根本看不到硬碟燈閃,因為這些常用的命令都是再第一次執行後就儲存在cache中的,以後就一直從記憶體中讀出來執行。如果cache佔用的記憶體過多了,影響正常執行程式需要的記憶體,那麼會釋放掉一部分cache記憶體,但是總量會保持一個很高的值,所以,linux總是能最大限度的使用記憶體,就算加到16G,32G記憶體,也會隨著不斷的IO操作,記憶體的free值會慢慢減少到只有幾M,想要記憶體不發生這種情況,只有一個辦法:把記憶體加到比硬碟大。2 手動釋放方法2.1 使用free檢視一下當前記憶體使用情況(可略過):[root@*** ~]# free -mtotal used free shared buffers cachedMem:

    512 488 23 0 57 157

    -/+ buffers/cache: 273 238 Swap:

    1055 0 10552.2

    執行sync同步資料[root@*** ~]# sync2.3 清理cache[root@*** ~]#echo 3 > /proc/sys/vm/drop_caches2.4 drop_cache的詳細文件如下,以便查閱Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.To free pagecache:* echo 1 > /proc/sys/vm/drop_cachesTo free dentries and inodes:* echo 2 > /proc/sys/vm/drop_cachesTo free pagecache, dentries and inodes:* echo 3 > /proc/sys/vm/drop_cachesAs this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.This tunable was added in 2.6.16.

  • 中秋節和大豐收的關聯?
  • 新農合二次報銷和大病救助一樣嗎?