1、查看內存使用情況 free -m/free -g
- total:內存總數
- used:已經使用的內存數
- free:空閑的內存數
- shared:當前已經廢棄不用
- buffers Buffer:緩存內存數
- cached Page:緩存內存數
第一行:
Mem的 Total=used+free used使用內存 free空閑內存
shared 表示被幾個進程共享的內存的。
buffer 緩沖 是用於存放要輸出到disk(塊設備)的數據。
是根據磁盤的讀寫 設計的,把分散的寫操作集中進行,減少磁盤碎片和硬盤的反復尋道,從而提高系統性能。
cache 緩存 是存放從disk上讀出的數據。是把讀取過的數據保存起來,重新讀取時若命中(找到需要的數據)就不要去讀硬盤了,若沒有命中就讀硬盤。
其中的數據會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往后排,直至從中刪除。
如果cache 的值很大,說明cache住的文件數很多。如果頻繁訪問到的文件都能被cache住,那么磁盤的讀IO bi會非常小。
第二行:
這一行表示兩項 -buffers/cache 和 + buffers/cache
-buffers/cache = used -(buffers+cache) 表示使用的內存中不計算buffers和cache,系統使用內存量
+ buffers/cache =free+( buffers+cache) 表示系統空閑內存與buffers、cache的和
第三行:
交換內存 使用量 空限量
Linux服務器運行一段時間后,由於其內存管理機制,會將暫時不用的內存轉為buff/cache,這樣在程序使用到這一部分數據時,能夠很快的取出,從而提高系統的運行效率,所以這也正是linux內存管理中非常出色的一點,所以乍一看內存剩余的非常少,但是在程序真正需要內存空間時,linux會將緩存讓出給程序使用,這樣達到對內存的最充分利用,所以真正剩余的內存是free+buff/cache
但是有些時候大量的緩存占據空間,這時候應用程序回去使用swap交換空間,從而使系統變慢,這時候需要手動去釋放內存,釋放內存的時候,首先執行命令 sync 將所有正在內存中的緩沖區寫到磁盤中,其中包括已經修改的文件inode、已延遲的塊I/O以及讀寫映射文件,從而確保文件系統的完整性
2、sync
手動執行sync命令(描述:sync 命令運行 sync 子例程。如果必須停止系統,則運行sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件)
3、釋放 echo 3 > /proc/sys/vm/drop_caches
0:0是系統默認值,默認情況下表示不釋放內存,由操作系統自動管理
1:釋放頁緩存
2:釋放dentries和inodes
3:釋放所有緩存
如果現在想讓操作系統重新分配內存,那么設置drop_caches的值為0即可
echo 0 > /proc/sys/vm/drop_caches