Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 手動釋放記憶體快取(drop_caches)指南

編輯:Linux 教學

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,否則未寫入磁碟的資料會遺失。
  • 釋放快取會暫時降低 I/O 效能,因為核心需重新從磁碟讀取資料。
  • 不可加入 cron 定時執行,會嚴重拖慢系統效能,違背快取設計初衷。
  • 若系統長期記憶體不足,應檢查是否有記憶體洩漏、調整服務參數或增加實體記憶體,而非依賴手動釋放。

永久調整快取回收積極度

若希望核心更積極回收快取,可調整 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 是手動釋放的標準組合,但請僅在特定測試/除錯場景使用,日常運維交給核心自動管理即可。

Copyright © Windows教程網 All Rights Reserved