Linux系統記憶體占用90 以上 解決方法

2021-07-23 00:07:28 字數 1811 閱讀 5599

最近遇到乙個疑問,不管是top,還是cat /proc/meminfo,  發現free記憶體基本快沒了,難道我們的程式出問題了?排查半天沒有事,

linux與windows不同,會存在快取記憶體,通常叫做cache memory。有些時候你會發現沒有什麼程式在執行,但是使用top或free命令看到可用記憶體會很少。

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

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

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

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

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

[rootmin@localhost~]#echo 3 > /proc/sys/vm/drop_caches

linux中如何釋放cache記憶體

因為linux的核心機制,一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容可以增加檔案以及的讀寫速度。

先說下free命令怎麼看記憶體

[rootmin@localhost~]# free

total used free shared buffers cached

mem: 515588 295452 220136 0 2060 64040

-/+ buffers/cache: 229352 286236

swap: 682720 112 682608

其中第一行用全域性角度描述系統使用的記憶體狀況:

total——總物理記憶體 

used——已使用記憶體,一般情況這個值會比較大,因為這個值包括了cache+應用程式使用的記憶體

free——完全未被使用的記憶體

shared——應用程式共享記憶體

buffers——快取,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)

cached——快取,用於已開啟的檔案

注意:total=used+free

used=buffers+cached (maybe add shared also)

第二行描述應用程式的記憶體使用:

前個值表示-buffers/cache——應用程式使用的記憶體大小,used減去快取值

後個值表示+buffers/cache——所有可**用程式使用的記憶體大小,free加上快取值

注意-buffers/cache=used-buffers-cached

+buffers/cache=free+buffers+cached

第三行表示swap的使用: 

used——已使用

free——未使用

cache釋放:

1.   to free pagecache:

[rootmin@localhost~]#echo 1 > /proc/sys/vm/drop_caches

2.   to free dentries and inodes:

[rootmin@localhost~]#echo 2 > /proc/sys/vm/drop_caches

3.   to free pagecache, dentries and inodes:

[rootmin@localhost~]#echo 3 > /proc/sys/vm/drop_caches

說明,釋放前最好sync一下,防止丟資料

Linux系統記憶體buff cache占用過多

用free或者top命令都能檢視記憶體使用情況 在雲伺服器上,total used free buff cache linux核心會在記憶體將要耗盡的時候,觸發記憶體 的工作,以便釋放出記憶體給急需記憶體的程序使用。一般情況下,這個操作中主要的記憶體釋放都來自於對buffer cache的釋放。還可...

linux記憶體占用問題

linux開機後,使用top命令檢視,4g物理記憶體發現已使用的多大3.2g,佔用率高達80 以上 mem 3889836k total,3341868k used,547968k free,286044k buffers swap 6127608k total,0k used,6127608k f...

檢視linux記憶體占用

可以直接使用top命令後,檢視 mem的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令 1 top top命令是linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似於windows的任務管理器 可以直接使用to...