linux 未跑程式 記憶體 cache使用過大

2021-06-20 02:27:05 字數 1317 閱讀 6312

linux與windows不同,會存在快取記憶體,通常叫做cache memory。有些時候你會發現沒有什麼程式在執行,但是使用top或free命令看到可用記憶體會很少,此時檢視linux系統 /proc/meminfo 檔案,會發現有一項 cached memory:

# >> cat /proc/meminfo

memtotal: 16414004 kb

memfree: 10278960 kb

buffers: 65588 kb

cached: 1273692 kb

swapcached: 15552 kb

active: 5349400 kb

inactive: 597340 kb

hightotal: 0 kb

highfree: 0 kb

lowtotal: 16414004 kb

lowfree: 10278960 kb

swaptotal: 33551744 kb

swapfree: 33315872 kb

dirty: 64 kb

writeback: 0 kb

slab: 134212 kb

commitlimit: 41758744 kb

committed_as: 5048776 kb

pagetables: 14784 kb

vmalloctotal: 536870911 kb

vmallocused: 279436 kb

vmallocchunk: 536590975 kb

hugepages_total: 0

hugepages_free: 0

hugepagesize: 2048 kb

什麼是cache memory(快取記憶體):

當你讀寫檔案的時候,linux核心為了提高讀寫效率與速度,會將檔案在記憶體中進行快取,這部分記憶體就是cache memory(快取記憶體)。即使你的程式執行結束後,cache memory也不會自動釋放。這就會導致你在linux系統中程式頻繁讀寫檔案後,你會發現可用物理記憶體會很少。

其實這快取記憶體(cache memory)在你需要使用記憶體的時候會自動釋放,所以你不必擔心沒有記憶體可用。如果你希望手動去釋放cache memory(快取記憶體)的話也是有辦法的。

釋放cache memory(快取記憶體):

用下面的命令可以釋放cache memory:

echo 3 > /proc/sys/vm/drop_caches

Linux記憶體機制 Buffer和Cache

今天twitter上關於buffer和cache討論得蠻火的,被各種說話一攪和,有點亂了,就乾脆整理一下。首先從翻譯上,buffer應該翻譯為 緩衝 cache應該翻譯為 快取 兩個完全不是乙個東西。在硬體這一層看,buffer應該為記憶體,cache為cpu整合的告訴快取。buffer為了讓不同速...

Linux下跑程式,防止命令終斷(斷網,斷電)

有時候我們在伺服器上跑程式,會發現當我們離開視窗時,正在執行的程式中斷了,這讓人非常鬱悶。下面介紹防止程式中斷的方法 新建乙個名為yourname的screen視窗 screen s yourname 大寫s 然後就可以在該介面中執行你的 命令 和在伺服器視窗執行一樣。暫時離開screen sess...

linux 記憶體管理 紅黑樹(未讀)

2009 12 11 10 02 佚名 51cto 字型大小 t t 很多的人都開始學習linux作業系統。當我們學習linux時,會遇到很多的問題。最近看linux記憶體管理,看到紅黑樹這一部分甚為頭大,於是了解了一下紅黑樹的基本知識。詳細講解一下linux記憶體管理。ad wot2014 使用者...