1. 程式人生 > >Linux記憶體清理/釋放命令

Linux記憶體清理/釋放命令

NameNode節點忽然掛了,重啟後提示OOM,但是這臺測試機的記憶體是16G的,只運行了Namenode和Jenkins,不至於OOM。於是使用free命令檢視,發現cached的快取有10G。很不正常,於是需要進行快取釋放。

echo 1 > /proc/sys/vm/drop_caches

此時在使用free -g就發現cached的快取以及沒有了。

cache釋放:
Sync

sync

To free pagecache:

echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes (釋放頁面快取,dentries和inode):

echo 3 > /proc/sys/vm/drop_caches

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

補充:free命令的補充

[[email protected] hadoop]$ free
             total       used       free     shared    buffers     cached
Mem:      16199748    2625692   13574056      12648      91292     382608
-/+ buffers/cache:    2151792   14047956
Swap:      4194300          0    4194300

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

  • total——總實體記憶體
  • used——已使用記憶體,一般情況這個值會比較大,因為這個值包括了cache+應用程式使用的記憶體
  • free——完全未被使用的記憶體
  • shared——應用程式共享記憶體
  • buffers——快取,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)
  • cached——快取,用於已開啟的檔案
  • note:
    • total=used+free
    • used=buffers+cached (maybe add shared also)

第二行描述應用程式的記憶體使用:
前個值表示-buffers/cache——應用程式使用的記憶體大小,used減去快取值
後個值表示+buffers/cache

——所有可供應用程式使用的記憶體大小,free加上快取值

  • note:
    • -buffers/cache=used-buffers-cached
    • +buffers/cache=free+buffers+cached

第三行表示swap的使用:

  • used——已使用
  • free——未使用

手動執行sync命令(描述:sync 命令執行 sync 子例程。如果必須停止系統,則執行 sync 命令以確保檔案系統的完整性。sync 命令將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對映檔案)