Ubuntu系統回收內存資源的常用方法
在回收內存前,需先了解系統內存狀態,常用命令如下:
free -h:直觀顯示總內存、已用內存、空閑內存、緩存(Buffers/Cache)及可用內存(Available,系統可立即分配給應用程序的內存)。top/htop:實時查看進程級內存占用(htop需安裝,界面更友好,命令:sudo apt install htop)。Ubuntu會自動利用空閑內存作為緩存(提升文件讀取速度),但可通過以下命令手動釋放:
sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches
sudo sync && echo 2 | sudo tee /proc/sys/vm/drop_caches
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
說明:sync命令用于將內存中的未寫入數據同步到硬盤,避免數據丟失;清理后系統會重新構建緩存,短期內可能略有性能下降,但長期可提升內存利用率。
sudo apt-get clean # 清理所有APT緩存
sudo apt-get autoclean # 清理舊版本的軟件包緩存
/var/log下的.log文件)可能占用大量空間,可刪除超過3天的舊日志:sudo journalctl --vacuum-time=3d # 清理3天前的日志
sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \; # 清空所有.log文件
/tmp目錄下的臨時文件可安全刪除:sudo rm -rf /tmp/*
ps aux | grep <進程名> # 查找特定進程
top # 實時查看進程資源占用
kill <PID> # 正常終止
kill -9 <PID> # 強制終止(僅用于無法正常關閉的進程)
systemctl list-unit-files --type=service # 查看所有服務
sudo systemctl disable <service_name> # 禁用服務
sudo systemctl stop <service_name> # 立即停止服務
卸載未使用的軟件可釋放內存及磁盤空間:
sudo apt-get remove --purge <軟件名> # 徹底卸載(包括配置文件)
sudo apt-get autoremove # 刪除不再需要的依賴包
sudo aptitude autoclean # 清理舊版本的依賴包(需安裝aptitude)
swappiness參數控制內核使用交換空間(Swap)的傾向(默認值60,值越小越傾向于使用物理內存)。建議設置為10-20(適用于內存充足的系統):sudo sysctl vm.swappiness=10 # 臨時生效
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf # 永久生效
sudo sysctl vm.vfs_cache_pressure=50 # 臨時生效
echo "vm.vfs_cache_pressure=50" | sudo tee -a /etc/sysctl.conf # 永久生效
sudo add-apt-repository ppa:gerardpuig/ppa
sudo apt update
sudo apt install ubuntu-cleaner
sudo apt install bleachbit
bleachbit
若物理內存不足,可通過交換空間(硬盤上的虛擬內存)緩解內存壓力:
sudo fallocate -l 2G /swapfile # 創建2GB交換文件
sudo chmod 600 /swapfile # 設置權限
sudo mkswap /swapfile # 格式化為交換空間
sudo swapon /swapfile # 啟用交換文件
/etc/fstab文件,添加以下行:/swapfile none swap sw 0 0