Linux記憶體清理

2021-09-24 18:07:18 字數 3016 閱讀 8145

第一類單位引數:

1) -b, –bytes, 以byte為單位顯示記憶體使用情況

2) -k, –kilo, 以kb為單位, 這也是預設值

3) -m, –mega, 以mb為單位顯示內容使用情況

4) -g, –giga, 以gb為單位顯示記憶體使用情況

第二類引數:

1)、 -h, –human, 自動將數值轉換為人類易讀形式

2)、 -c, –count, 展示結果count次,需與-s配合使用

3)、 -s, –seconds, 動態重新整理記憶體使用情況的間隔

free -m各欄位含義

第一部分mem行:

********************====

total 記憶體總數: 3865m

used 已經使用的記憶體數: 1545m

free 空閒的記憶體數: 2320m

shared 多個程序共享的記憶體總額 196m

buffers buffer 快取記憶體數: 176m

cached page 快取記憶體數:569m

關係:total (3865m) = used(1545m) + free(2320m)

第二部分(-/+ buffers/cache):

********************====

(-buffers/cache) used記憶體數:798m

(指的第一部分mem行中的used – buffers – cached)

即為1545 – 176 – 569 = 800 取整時計算差異 2m

(+buffers/cache) free記憶體數: 3066m

(指的第一部分mem行中的free + buffers + cached)

即為2320 + 176 + 569 = 3065 取整時計算差異 1m

第三部分是指交換分割槽

********************====

當系統的物理記憶體不夠用的時候,就需要將物理記憶體中的一部分空間釋放出來,以供當前執行的程式使用。這些被釋放的程序被臨時儲存到swap空間中,等到那些程式要執行時,再從swap分割槽中恢復儲存的資料到記憶體中。這樣,系統總是在物理記憶體不夠時,才進行swap交換。所以swap分割槽不被占用或者占用很少,說明現在系統記憶體夠用,執行還算良好,不會影響系統執行

可以用free -h 檢視記憶體占用情況。

檢視程序占用的記憶體情況:ps aux|awk 『 end 』

檢視記憶體分配情況:cat /proc/meminfo

釋放記憶體:

首先我們需要使用sync指令,將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 i/o 和讀寫對映檔案。否則在釋放快取的過程中,可能會丟失未儲存的檔案。

#sync

接下來,我們需要將需要的引數寫進/proc/sys/vm/drop_caches檔案中,比如我們需要釋放所有快取,就輸入下面的命令:#echo 3 > /proc/sys/vm/drop_caches

備註:echo n的意義:

在linux系統下,我們一般不需要去釋放記憶體,因為系統已經將記憶體管理的很好。但是凡事也有例外,有的時候記憶體會被快取占用掉,導致系統使用swap空間影響效能,此時就需要執行釋放記憶體(清理快取)的操作了。

linux系統的快取機制是相當先進的,他會針對dentry(用於vfs,加速檔案路徑名到inode的轉換)、buffer cache(針對磁碟塊的讀寫)和page cache(針對檔案inode的讀寫)進行快取操作。但是在進行了大量檔案操作之後,快取會把記憶體資源基本用光。但實際上我們檔案操作已經完成,這部分快取已經用不到了。這個時候,我們難道只能眼睜睜的看著快取把記憶體空間佔據掉麼?

所以,我們還是有必要來手動進行linux下釋放記憶體的操作,其實也就是釋放快取的操作了。

要達到釋放快取的目的,我們首先需要了解下關鍵的配置檔案/proc/sys/vm/drop_caches。這個檔案中記錄了快取釋放的引數,預設值為0,也就是不釋放快取。他的值可以為0~3之間的任意數字,代表著不同的含義:

0 – 不釋放

1 – 釋放頁快取

2 – 釋放dentries和inodes

3 – 釋放所有快取

1.cat /proc/meminfo

2.sudo atop

atop命令是乙個終端環境的監控命令。它顯示的是各種系統資源(cpu, memory, network, i/o, kernel)的綜合,並且在高負載的情況下進行了彩色標註。

3.atop

atop命令是乙個終端環境的監控命令。它顯示的是各種系統資源(cpu, memory, network, i/o, kernel)的綜合,並且在高負載的情況下進行了彩色標註。

4.htop

htop命令顯示了每個程序的記憶體實時使用率。它提供了所有程序的常駐記憶體大小、程式總記憶體大小、共享庫大小等的報告。列表可以水平及垂直滾動。

5.memstat -p

memstat是乙個有效識別executable(s), process(es) and shared libraries使用虛擬記憶體情況的命令。給定乙個程序id,memstat可以列出這個程序相關的可執行檔案、資料和共享庫。

6.nmon

nmon是乙個基於ncurses的系統基準測試工具,它可以監控cpu、記憶體、i/o、檔案系統及網路資源等的互動模式。對於記憶體的使用,它可以實時的顯示 總/剩餘記憶體、交換空間等資訊

7.ps aux --sort -rss

ps命令可以實時的顯示各個程序的記憶體使用情況。reported memory usage information includes %mem (percent of physical memory used), vsz (total amount of virtual memory used), and rss (total amount of physical memory used)。你可以使用 「–sort」選項對程序進行排序,例如按rss進行排序。

8.vmstat -s

vmstat命令顯示實時的和平均的統計,覆蓋cpu、記憶體、i/o等內容。例如記憶體情況,不僅顯示物理記憶體,也統計虛擬記憶體。

Linux 記憶體清理

1.clear pagecache only.sync echo 1 proc sys vm drop caches 2.clear dentries and inodes.sync echo 2 proc sys vm drop caches 3.clear pagecache,dentries ...

清理linux記憶體cache

1.top中的buffers和cached cached快取了對檔案的讀寫,buffers快取了inode,dentry等檔案系統metadata。顯然,metadata大小遠遠小於檔案記憶體,所以buffers一般也遠小於cached。cached的部分叫page cache,buffers的部分...

linux清理記憶體 快取

linux下清理快取,以釋放記憶體 系統環境 cent os 5.4 x64 今天檢視開發使用的機器,記憶體使用了11g,絕大部門都是被快取了,根據linux記憶體可使用的計算方法 可用記憶體 free buffers cached,那麼這台伺服器可用記憶體約為10.7g,swap占用非常 明目前物...