Linux命令---手動釋放內存


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM