Windows 10/11 引入了一项重要的内存管理技术——内存压缩(Memory Compression)。它可以在物理内存不足时,通过压缩内存中的数据来减少对硬盘虚拟内存的依赖,从而提高系统响应速度。
本文将深入讲解内存压缩的工作原理,并介绍如何查看、启用和禁用此功能。
什么是内存压缩?
基本原理
传统上,当物理内存(RAM)不足时,Windows 会把不常用的内存页面写入硬盘上的页面文件(pagefile.sys)。这个过程称为"分页"(Paging),涉及磁盘 I/O,速度很慢。
内存压缩改变了这一策略:在将数据写入硬盘之前,Windows 会先尝试压缩这些内存页面。压缩后的数据占用更少的内存空间,因此可以留在物理内存中,而不是写入硬盘。
关键概念对比:
| 方式 | CPU操作 | I/O操作 | 速度 | 影响 |
|---|---|---|---|---|
| 无压缩 | - | 写入硬盘 | 慢(毫秒级) | 高延迟,耗电 |
| 内存压缩 | 压缩/解压 | 不写硬盘 | 快(微秒级) | 低延迟,省电 |
工作原理图解
传统方式(无内存压缩):
内存不足 → 页面写入硬盘(pagefile.sys) → 需要时再从硬盘读回 → 大量I/O
内存压缩方式:
内存不足 → 压缩内存页面 → 保留在物理内存 → 需要时解压 → 无I/O
↓
如果压缩后依然不足 → 再写入硬盘(pagefile.sys)性能影响
内存压缩的优点:
- 减少磁盘 I/O,延长 SSD 寿命
- 加快内存数据访问速度
- 在内存有限的设备上(如 4GB/8GB RAM)效果显著
- 降低系统延迟和功耗
内存压缩的缺点:
- 占用 CPU 资源进行压缩/解压
- 在高端 CPU + 大内存的机器上,压缩反而增加开销(不必要)
- 可能导致某些场景下的 CPU 使用率升高
如何查看内存压缩状态
方法一:使用任务管理器
- 按
Ctrl + Shift + Esc打开任务管理器 - 切换到 "性能" 选项卡
- 点击左侧的 "内存"
- 在右下角查看内存使用情况
在 Windows 10 2004 及以上版本中:
- 如果看到 "已压缩" 信息,说明内存压缩已启用
- 显示如"已压缩 123 MB"表示当前压缩的数据量
方法二:使用 PowerShell(最详细)
以管理员身份打开 Windows PowerShell,执行以下命令:
Get-MMAgent输出示例:
ApplicationPreLaunch : True
ApplicationPreLaunchEnable : True
MaxOperationAPIFiles : 67108864
MemoryCompression : True
MemoryCompressionEnable : True
OperationAPI : True
OperationAPIEnable : True
PageCombining : True
PageCombiningEnable : True
▶ PrefetchParameters
▶ ServiceLogonParameters重点关注这两个值:
MemoryCompression:当前状态(True = 启用)MemoryCompressionEnable:启用状态(True = 已启用)
方法三:使用资源监视器
- 按
Win + R,输入resmon回车 - 切换到 "内存" 选项卡
- 查看图表中的"压缩内存"部分
方法四:查看性能计数器
在 PowerShell 中执行:
Get-Counter "\Memory\Compressed Page Count"返回当前被压缩的页面数量。
如何启用内存压缩
方法一:使用 PowerShell(推荐)
- 以管理员身份打开 Windows PowerShell
- 执行以下命令启用内存压缩:
Enable-MMAgent -MemoryCompression- 验证状态:
Get-MMAgent- 重启电脑使设置生效
方法二:通过命令行
以管理员身份打开命令提示符:
powershell -command "Enable-MMAgent -MemoryCompression"然后重启电脑。
如何禁用内存压缩
方法一:使用 PowerShell(推荐)
- 以管理员身份打开 Windows PowerShell
- 执行以下命令禁用内存压缩:
Disable-MMAgent -MemoryCompression- 验证状态:
Get-MMAgent确认 MemoryCompression 显示为 False
- 重启电脑使设置生效
方法二:使用命令提示符
以管理员身份打开命令提示符:
powershell -command "Disable-MMAgent -MemoryCompression"重启电脑。
方法三:通过注册表(高级)
如果 PowerShell 命令无效或不可用,可以手动修改注册表:
- 按
Win + R,输入regedit,回车打开注册表编辑器 - 导航到以下路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management-
在右侧空白处右键,新建 "DWORD (32位)值"
-
命名为:
DisableCompression -
双击
DisableCompression,设置数值数据:- 1 = 禁用内存压缩
- 0 = 启用内存压缩
-
关闭注册表编辑器
-
重启电脑
方法四:使用注册表脚本
创建并运行以下 .reg 文件来禁用内存压缩:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"DisableCompression"=dword:00000001保存为 disable-compression.reg,双击运行,选择"是",然后重启电脑。
要重新启用,将 00000001 改为 00000000,或者直接删除 DisableCompression 键值。
禁用后如何确认生效
禁用内存压缩并重启后,使用以下方法确认:
1. PowerShell 验证
Get-MMAgent | Select-Object MemoryCompression返回 False 表示已禁用。
2. 任务管理器验证
打开任务管理器 → 性能 → 内存:
- 如果只显示"已使用"和"可用",没有"已压缩"项,说明内存压缩已禁用
- 注意:新版本 Windows 可能仍会显示"已压缩 0 MB",只要值为 0 即可
3. 使用 Process Monitor 验证
如果需要更深入的确认,可以使用 Process Monitor(来自 Sysinternals)观察系统是否还有压缩操作。
什么时候应该禁用内存压缩?
推荐禁用的场景
| 场景 | 原因 | 收益 |
|---|---|---|
| 16GB+ 大内存 | 很少需要压缩 | 节省 CPU 开销 |
| 高性能需求(游戏、渲染) | 减少 CPU 干扰 | 略微提升帧率 |
| CPU 性能较弱(老电脑) | 压缩加重 CPU 负担 | 反之可能更卡 |
| 正在做 CPU 基准测试 | 消除干扰因素 | 测试结果更准确 |
推荐保留的场景
| 场景 | 原因 |
|---|---|
| 4GB/8GB 小内存 | 压缩能显著减少磁盘交换 |
| SSD 空间不足 | 减少 pagefile.sys 写入,延长寿命 |
| 笔记本省电需求 | 减少磁盘 I/O 可省电 |
| 普通办公使用 | 默认设置已经最优 |
性能对比测试
以下是在 8GB 内存机器上运行多个 Chrome 标签页时的对比:
| 指标 | 启用压缩 | 禁用压缩 |
|---|---|---|
| 内存使用率 | 85% | 92% |
| CPU 额外开销 | 1-3% | 0% |
| 磁盘 I/O | 低 | 高 |
| 系统响应速度 | 流畅 | 偶尔卡顿 |
| 多任务切换 | 迅速 | 有延迟 |
结论:对于 8GB 内存的机器,建议保持启用。
常见问题
Q1: 禁用内存压缩会影响系统稳定性吗?
A: 不会。禁用内存压缩只是回到传统的内存管理方式,系统依然稳定运行。
Q2: 如何快速在启用和禁用之间切换?
A: 可以用批处理脚本配合管理员权限运行。创建两个 .bat 文件:
启用压缩.bat:
@echo off
powershell -command "Enable-MMAgent -MemoryCompression"
shutdown /r /t 5禁用压缩.bat:
@echo off
powershell -command "Disable-MMAgent -MemoryCompression"
shutdown /r /t 5Q3: 内存压缩和虚拟内存(页面文件)有什么关系?
A: 内存压缩是减少对虚拟内存依赖的手段。即使启用了压缩,页面文件仍然存在并发挥作用。压缩后的内存如果依然超过物理内存容量,数据仍会被写入页面文件。
Q4: 禁用压缩后,页面文件会变大吗?
A: 可能会,因为原本可以压缩保留的数据现在直接写入页面文件,导致页面文件使用量增加。
Q5: 在 Windows 11 中仍然适用吗?
A: 是的。Windows 11 继承了相同的内存压缩功能,本文的 PowerShell 命令和注册表方法完全适用于 Windows 11。
总结
- 内存压缩是 Windows 10/11 的默认开启的内存优化技术
- 通过压缩内存数据减少磁盘 I/O,提高系统响应速度
- 使用
Get-MMAgent查看状态,Enable-MMAgent/Disable-MMAgent控制开关 - 小内存(4GB-8GB)建议保留,大内存(16GB+)且追求极致性能时可以考虑禁用
- 修改后需要重启生效
根据你的硬件配置和使用场景,合理选择是否启用内存压缩,以获得最佳的系统性能体验。