Linux 核心會自動管理記憶體,將閒置 RAM 用作頁面快取、dentries 與 inodes 快取以加速 I/O。正常情況下無需手動釋放,核心會在記憶體壓力大時自動回收。但在效能測試、排查記憶體洩漏、或需要確保特定工作負載獲得乾淨記憶體環境時,可手動觸發釋放。
必須以 root 權限執行:
# 先同步磁碟確保資料不遺失 sync # 釋放頁面快取 echo 1 > /proc/sys/vm/drop_caches # 釋放 dentries 和 inodes 快取 echo 2 > /proc/sys/vm/drop_caches # 同時釋放頁面快取、dentries、inodes(最常用) echo 3 > /proc/sys/vm/drop_caches
| 數值 | 效果 |
|---|---|
| 1 | 僅釋放頁面快取 |
| 2 | 釋放 dentries 和 inodes 快取 |
| 3 | 全部釋放(頁面快取 + dentries + inodes) |
sync,否則未寫入磁碟的資料會遺失。若希望核心更積極回收快取,可調整 vm.vfs_cache_pressure(預設 100,數值越大越積極回收 inode/dentry 快取):
# 暫時生效 sysctl -w vm.vfs_cache_pressure=200 # 永久生效 echo "vm.vfs_cache_pressure=200" >> /etc/sysctl.conf sysctl -p
另可調整 vm.swappiness 控制 swap 積極度(預設 60,數值越小越不傾向使用 swap)。
free -h # 或觀察 /proc/meminfo 中的 Cached、Buffers、SReclaimable 變化
總結:sync; echo 3 > /proc/sys/vm/drop_caches 是手動釋放的標準組合,但請僅在特定測試/除錯場景使用,日常運維交給核心自動管理即可。
awk 一行指令統計 IP 連線數:netstat 配合關聯陣列實現高效分析
Linux Memcached 1.6 部署實戰:源碼編譯、libevent 依賴、PHP 擴展整合、系統服務化與調優
MySQL 啟動報錯:'./mysql-bin.index' not found (Errcode: 13) 權限修復方案
Linux 協議棧鄰居子系統輸出路徑:neigh_resolve_output 與 neigh_event_send
Linux Shell 深度解析:終端機、解釋器、父子 Shell、變數作用域與啟動配置全景圖
Linux 開機故障兩大經典案例:LILO 損壞與 root 密碼遺忘完整解決方案