Linux記憶體清理/釋放命令
阿新 • • 發佈:2018-12-29
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
- note:
- -buffers/cache=used-buffers-cached
- +buffers/cache=free+buffers+cached
第三行表示swap的使用:
- used——已使用
- free——未使用
手動執行sync命令(描述:sync 命令執行 sync 子例程。如果必須停止系統,則執行 sync 命令以確保檔案系統的完整性。sync 命令將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對映檔案)