有時我會發現我的 RHEL5 在開機沒多久後 free 的記憶體越來越少, 但是重點是我根本沒在跑什麼很耗記憶體資源的應用程式.
[root@benjr ~]# top
其他在 Linux 可以用來看記憶體的程式:
[root@benjr ~]# free -h total used free shared buff/cache available Mem: 741M 86M 536M 4.9M 118M 536M Swap: 1.5G 0B 1.5G
這邊會列出一個比較特別的是 shared , 允許 processes(程序) 透過 Shared memory 共享儲存於記憶體中的 common structures 和 Data.
[root@benjr ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 548168 764 120840 0 0 17 2 25 33 0 1 99 0 0
原來在 Linux 底下記憶體的使用區分為 5 種 Application Memory(歸類在 Used Memory), Buffered Memory, Cached Memory, Free Memory , Used Memory
-
Application Memory (歸類在 Used Memory)
所有程式所佔用的記憶體數量. -
Buffered Memory
資料還來不及儲存到硬碟中暫儲在記憶體的資料. -
Cached Memory
資料已經由硬碟中讀取出來,提供給應用程式接下來使用,用以提高存取效能. -
Free Memory
尚未使用到的的記憶體. -
Used Memory
Application Memory + Buffered Memory + Cached Memory 就是目前所有有在使用的記憶體數量,有些顯示會排除 Buffered Memory 與 Cached Memory
系統所擁有的總記憶體數就是 Free Memory + Used Memory(Application Memory + Buffered Memory + Cached Memory) 其中的 Cached Memory 會依據系統的使用狀況做動態調整,借此以提高系統效能.
/proc/sys/vm/drop_caches 的預設值為 0,也就是啟動 cache 的功能.如果你不喜歡這些功能可以把他取消掉.在 Kernel 2.6.16 之後的本版可以透過 /proc/sys/vm/drop_caches 來釋放 Cached Memory
釋放 pagecache 所使用的 Cached Memory.
[root@benjr ~]# echo 1 > /proc/sys/vm/drop_caches
釋放 dentries,inodes 所使用的 Cached Memory.
[root@benjr ~]# echo 2 > /proc/sys/vm/drop_caches
釋放 pagecache,dentry,inode 所使用的 Cached Memory.
[root@benjr ~]# echo 3 > /proc/sys/vm/drop_caches
也可以寫入 /etc/sysctl.conf 讓開機時就生效.
[root@benjr ~]# echo "vm.drop_caches = 1" >> /etc/sysctl.conf
沒有解決問題,試試搜尋本站其他內容