首先,内存压缩功能是微软给小内存机器的福音,它将内存压缩以减少内存使用量,如果我们的电脑内存很大,用不完的话,像我是笔记本板载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