内存优化完全指南
2026/3/20大约 3 分钟
Linux Mint 内存优化完全指南
这篇记录一次真实的 Linux Mint 内存优化过程:从内存告急、Swap 打满,到切换纯 zram、调整内核策略、加上 OOM 保护,最终把系统稳定性和响应速度拉回到优秀状态。
一 问题背景
1.1 初始状态
排查时的核心数据:
- 物理内存: 29GB
- 已使用: 25GB (86%)
- 可用内存: 3.5GB
- Swap: 15GB,几乎耗尽
1.2 主要问题
| 问题 | 严重程度 | 影响 |
|---|---|---|
| Swap 完全耗尽 | 🔴 严重 | 系统响应明显变慢 |
| 可用内存过低 | 🔴 严重 | 高负载场景容易卡顿 |
| 长时间残留会话 | 🟡 中等 | 持续吃内存、吃 CPU |
| 文件 Swap | 🟡 中等 | 磁盘 IO 成为瓶颈 |
1.3 内存占用分析
常用定位命令:
# 查看内存概览
free -h
# 查看内存占用 TOP 10 进程
ps aux --sort=-%mem | head -11观察到的主要内存占用:
- IntelliJ IDEA: 约 4.9GB
- VMware 虚拟机: 约 4GB
- 多个 IDE/AI 工具常驻进程
- 多个 OpenCode 会话并行
二 优化流程
2.1 清理僵尸进程
2.1.1 识别僵尸会话
判断标准:
- 进程对应终端显示
(deleted) - 运行时间很长,但无人交互
w/who中找不到对应活跃终端
# 看会话是否还挂着真实终端
for pid in $(pgrep -f "\.opencode$"); do
echo "=== PID: $pid ==="
ps -p "$pid" -o pid,etime,%cpu,%mem,cmd --no-headers
lsof -p "$pid" 2>/dev/null | grep -E "pts/|tty" | head -3
echo
done
# 优雅终止僵尸会话
kill -15 <PID1> <PID2>清理后,可用内存和 Swap 都会明显回升。
2.2 从文件 Swap 切换到纯 zram
2.2.1 为什么选 zram
性能差异(体感非常明显):
| 类型 | 速度 | 延迟 | 寿命影响 |
|---|---|---|---|
| zram | 内存级 | <1ms | 无磁盘写入 |
| 文件 Swap (SSD) | 磁盘级 | 10-100ms | 增加 SSD 写入 |
| 文件 Swap (HDD) | 磁盘级 | 100-1000ms | 响应更慢 |
zram 的关键收益:
- 性能更高:比文件 Swap 快很多
- 压缩率高:常见 3:1 到 4:1
- 磁盘更友好:减少持续写入
2.2.2 检查当前 zram
zramctl
swapon --show本文案例中,最终将 zram 配到物理内存的 80%,并保留 zstd 算法。
2.3 调整内存策略参数
2.3.1 关键参数
# 当前策略
sysctl vm.swappiness
sysctl vm.vfs_cache_pressure本文做的策略调整:
vm.swappiness=40(默认 10 偏保守,zram 场景下可更积极)- 保持
vfs_cache_pressure=100
2.3.2 增加 OOM 保护
安装并启用 earlyoom,避免内存耗尽导致系统“假死”:
sudo apt update
sudo apt install -y earlyoom
sudo systemctl enable --now earlyoom三 三个脚本(可复用)
为了复盘方便,把这次整理后的脚本放到博客目录:
src/programming/linux/Linux_Mint/scripts/setup_zram_only.shsrc/programming/linux/Linux_Mint/scripts/optimize_memory_policy.shsrc/programming/linux/Linux_Mint/scripts/expand_swap.sh
3.1 setup_zram_only.sh
用途:禁用文件 Swap,启用纯 zram(80%)。
./src/programming/linux/Linux_Mint/scripts/setup_zram_only.sh3.2 optimize_memory_policy.sh
用途:把 swappiness 调到 40,并安装 earlyoom。
./src/programming/linux/Linux_Mint/scripts/optimize_memory_policy.sh3.3 expand_swap.sh
用途:保留文件 Swap 的场景下扩容到 24G(备用方案)。
./src/programming/linux/Linux_Mint/scripts/expand_swap.sh四 执行顺序建议
推荐顺序:
- 先做僵尸进程清理(立刻见效)
- 再切换纯 zram(性能提升)
- 最后调策略和 OOM 保护(长期稳定)
五 验证清单
5.1 配置验证
free -h
swapon --show
zramctl
sysctl vm.swappiness
systemctl is-active earlyoom5.2 目标状态
- 可用内存明显提升
- Swap 不再长时间打满
- zram 算法为
zstd vm.swappiness=40earlyoom处于active
六 本次优化结果
本文案例最终状态:
- 内存从高压恢复到健康余量
- Swap 从几乎打满恢复到可控状态
- 系统在多工具并行场景下更稳定
- 交互延迟和卡顿体感明显改善
如果你也是 Linux Mint 开发机、工具常驻多、会话长时间运行,这一套流程可以直接复用。
