MemGuardian:一个面向 Windows 的高性能内存自动优化工具
项目地址:https://github.com/xie480/MemGuardian
MemGuardian 是一个运行在 Windows 平台上的内存优化工具,它的核心目标并不是“简单释放内存”,而是通过系统级 API 调用、进程工作集调整以及后台监控机制,在合适的时机触发 Windows 自身的内存回收行为,从而降低系统在高负载情况下的内存压力。
它的设计思路可以理解为 PCL 与 ISLC 这一类工具的延伸版本,但更加偏向自动化与工程化实现,而不是手动触发式的优化工具。
一、工具用途与实际效果
在 Windows 的内存管理机制中,“占用率高”并不一定等价于“真正的内存不足”。很多情况下,系统会主动将空闲内存用于缓存、文件缓存以及进程工作集扩展,以提升整体性能。
但在一些场景下,例如长时间游戏、开发环境运行、浏览器标签大量打开、虚拟机运行等,这些机制可能导致:
内存看似被占满,但实际上可用内存被缓存占据,应用切换时出现卡顿、延迟甚至轻微掉帧。
MemGuardian 的作用,就是在系统内存压力达到一定阈值时,主动触发 Windows 的内存回收路径,让这些“可回收但未回收”的内存被释放出来。
在部分设备上,可以观察到系统内存占用从高位(例如 90% 以上)下降到较低区间(例如 30% 左右)的变化,同时系统仍然保持正常使用状态,包括办公、开发甚至游戏运行。
不过需要强调的是,这种变化依赖于设备的内存容量、后台进程数量以及 Windows 当前的内存调度策略,因此并不是一个固定效果,而是一种“优化行为增强器”。
二、源码拆解:MemGuardian 的核心实现逻辑
核心文件是 memory_boost.py,它实际上并不是一个普通 Python 脚本,而是一个通过 ctypes 直接调用 Windows Native API 的系统级优化程序。
整体结构可以拆成四个层次:权限获取、系统内存清理、进程级优化以及多轮执行控制。
1. 权限提升与系统能力解锁
Windows 对内存操作有严格限制,因此程序启动后首先会判断是否具有管理员权限。
如果没有管理员权限,会通过 ShellExecuteW 触发 UAC 提权流程重新启动自身,这一步保证后续所有操作可以在系统级别执行。
随后进入关键步骤:启用特权。
RtlAdjustPrivilege(SE_INCREASE_QUOTA_PRIVILEGE, 1, 0, ...)RtlAdjustPrivilege(SE_PROFILE_SINGLE_PROCESS_PRIVILEGE, 1, 0, ...)这两个权限分别对应内存配额调整与单进程性能分析权限,它们决定了程序是否能够:
执行 Working Set 清理 访问系统级内存列表 触发 Standby List 清理 进行文件缓存刷新
如果缺少这一步,后续所有“优化动作”都会被系统拒绝或无效。
2. Windows 内存结构的主动清理
这一部分是整个工具的核心,也是“内存下降”现象的主要来源。
Windows 内存结构中存在几个关键组成部分:Working Set、Standby List 和 File Cache。MemGuardian 通过 NtSetSystemInformation 对这些结构进行主动操作。
首先是 Working Set 清理:
nt_memory_list_command(MemoryEmptyWorkingSets)这一操作会让系统尝试压缩所有进程的驻留内存,将部分页面移出物理内存,使其进入可回收状态。
接下来是 Standby List 清理,这是效果最明显的部分:
MemoryPurgeStandbyListMemoryPurgeLowPriorityStandbyListStandby List 本质上是 Windows 为了性能预留的缓存区域,这些数据在需要时可以立即重新加载,但在内存压力下可以被回收。MemGuardian 直接触发这一层的清理,相当于“主动让系统释放缓存”。
最后是文件缓存清理:
SetSystemFileCacheSize(-1, -1, 0)这一调用会强制刷新系统文件缓存,使缓存占用的内存回到可用状态。
3. 进程级内存优化机制(Trim 策略)
除了系统级清理,MemGuardian 还会对单个进程进行优化,这部分逻辑在 trim_top_processes 中。
首先程序会扫描系统中所有进程,使用 psutil 收集:
PID 进程名 RSS 内存占用 用户信息 运行状态
然后进入一个评分系统 score_proc,这一系统是整个“智能优化策略”的核心。
评分逻辑会综合多个因素:
如果进程属于浏览器、IDE、游戏等常见高内存应用,会获得更高权重 如果进程内存占用超过 100MB、200MB、500MB,会逐级加分 如果进程处于 idle 或 sleep 状态,会进一步加分 如果处于 extreme 模式,还会额外提高权重 如果命中系统黑名单(如 lsass、svchost 等),直接大幅扣分
这一机制的本质是:
通过启发式规则选择“最值得被压缩工作集”的进程。
随后系统调用:
EmptyWorkingSet(handle)这一 API 会强制让目标进程释放部分驻留内存,但不会终止进程,因此对用户体验影响相对较小。
4. 多轮执行与节奏控制机制
MemGuardian 并不是一次性执行优化,而是采用多轮循环策略:
rounds=2pause_ms=120每一轮都会执行完整流程:
清理 Working Set 清理 Standby List 清理 Low Priority Standby List 刷新 File Cache 对进程进行 Trim
这种设计的原因在于 Windows 内存恢复并不是瞬时完成的,多轮执行可以让系统逐步进入更稳定的内存状态,同时避免一次性操作带来的抖动。
5. 整体执行流程
从系统视角来看,整个优化流程可以抽象为:
系统内存监控触发条件满足 进入管理员权限执行环境 启用内存操作特权 清理系统缓存结构 扫描进程并计算优化优先级 对高权重进程执行工作集收缩 等待系统稳定 进入下一轮循环
三、使用教程
1. 配置 Windows 任务计划程序
首先需要将:
memory_boost.exe加入 Windows 任务计划程序。
打开:
Win + R输入:
taskschd.msc点击:
创建任务常规
名称填写:
MemoryBoost勾选:
☑ 使用最高权限运行配置:
Windows 10 / Windows 11操作
程序填写:
D:\Windows_MemoryBoost\memory_boost.exe请修改为实际路径。
2. 测试任务是否成功
打开终端执行:
schtasks /run /tn "\MemoryBoost"若内存占用明显下降,则说明配置成功。
3. 启动后台守护进程
编辑:
memory_guardian.py根据需要修改以下字段:
DEFAULT_THRESHOLD = 90.0 # 触发阈值DEFAULT_RELEASE = 80.0 # 恢复阈值DEFAULT_INTERVAL = 5 # 检测间隔(秒)DEFAULT_COOLDOWN = 120 # 冷却时间(秒)推荐配置:
触发阈值:90%恢复阈值:80%检测间隔:5 秒冷却时间:120 秒随后启动后台守护进程:
pythonw memory_guardian.py启动后将自动后台运行,不会弹出控制台窗口。
工作流程
检测内存占用 ↓超过阈值 ↓自动执行:
schtasks /run /tn "\MemoryBoost"
↓触发内存优化 ↓进入冷却时间 ↓等待下一次触发日志
后台日志默认保存为:
memory_guardian.log可用于查看:
- 触发记录
- 错误信息
- 运行状态
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时










