首先,内存压缩功能是微软给小内存机器的福音,它将内存压缩以减少内存使用量,如果我们的电脑内存很大,用不完的话,像我是笔记本板载4G+我自己买的16G内存条,合起来20G的内存,日常办公使用基本上用不满(除非跑虚拟机等等),所以可以关闭这个内存压缩功能

我们可以通过Enable-MMAgent模块控制内存压缩

原型如下

Enable-MMAgent
[-ApplicationLaunchPrefetching]
[-OperationAPI]
[-PageCombining]
[-ApplicationPreLaunch]
[-MemoryCompression]
[-CimSession <CimSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[<CommonParameters>]

其中-MemoryCompression参数可以控制内存压缩(别名-mc

Indicates that this cmdlet uses memory compression.

Type:

SwitchParameter

Aliases:

mc

Position:

Named

Default value:

None

Accept pipeline input:

True

Accept wildcard characters:

False

那我们启用它,执行Enable-MMAgent -MemoryCompression也可以使用Enable-MMAgent -mc命令,也就是不进行内存压缩,注意:需要使用管理员权限运行PowerShell再执行此命令,此模块包含在PowerShell中

重启系统后可以看到任务管理器的内存栏使用中(已压缩)的的值为0MB

对比之前没有操作过的图,已压缩的值大于0MB,CPU都快跑满了(其实是我在跑VMware虚拟机)

我这个笔记本的CPU本来就很拉跨,配置如图

Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz

基准速度: 1.80 GHz
插槽: 1
内核: 4
逻辑处理器: 8
虚拟化: 已启用
L1 缓存: 256 KB
L2 缓存: 1.0 MB
L3 缓存: 6.0 MB

利用率 17%
速度 2.80 GHz
正常运行时间 0:00:34:37
进程 285
线程 3957
句柄 120046

所以我的电脑关闭了内存压缩后CPU占用下来了,自然我的电脑没那么卡了

如果再次开启内存压缩呢,很简单,把命令反过来,之前是Enable,反过来不就是Disable吗,所以命令就是Disable-MMAgent -mc,执行之后重启电脑就行了

这个内存压缩大概从Windows Server 2012 R2的时候就有了,后来好像还出现过内存泄漏……微软的神奇负更新哈哈

参考文章

https://learn.microsoft.com/en-us/powershell/module/mmagent/enable-mmagent?view=windowsserver2022-ps

https://zhuanlan.zhihu.com/p/466283870