为什么 Windows 11 总是占用更多的内存

SysMain

SysMain 的前身为 SuperFetch,自 Windows 10 版本 1809 起更名为 SysMain,再往前是 Windows XP 引入的 Prefetch

SysMain 服务的运作是 Windows 11 内存占用的一个核心因素。SysMain 会学习用户的 Windows 使用习惯,将高频应用程序和数据预加载至内存备用列表 (Standby List),以短时提高 Windows 的工作效率。当其他应用程序需要内存时,Windows 会立即释放这部分被占用缓存。但 SysMian 的占用会动态膨胀,在 32 GB 内存的 Windows 上甚至可达 10 GB 左右。

例如,在我的 Windows 上,开机了近 30 个小时,在“资源监视器” > “内存” > “物理内存”板块中可以看到,“备用”的部分就占用到了 13072 MB 的大小。“备用”所占的大小为 SysMain 预加载的数据 + 用户最近打开的文件缓存 + 应用程序释放的内存总和。

资源监视器

如果想知道更精细的分配,可以使用 RAMMap 来查看,只需要切换到 File Summary 标签页,Standby 那一列即是被缓存的大小。

RAMMap

相较于其他 Windows,Windows 11 采用的是更加激进的内存管理模式,默认会占用更多的内存,以提高读写速度,减少等待时间。在这些被占用的内存中,有相当大一部分的内容均为缓存,不论是 SysMain 主动生成的缓存,抑或是其他存放到内存的缓存。而当有应用程序需要到较大的内存时,Windows 会主动释放较长时间不用的缓存内容,来让给相对应的应用程序使用。

此外,为减少对慢速页面文件的依赖,Windows 11 更频繁地使用 Xpress 算法,将冷数据压缩至原始大小的 30% 到 50% 后存放在物理内存中。这虽然能用 CPU 时间换取有效内存空间,但压缩数据本身也会计入“已用内存”,推高任务管理器中的数值。这看似是在偷内存,实则是利用现有的技术,更高效地管理可用内存空间,而不是只局限于眼前“可用内存小”这一利益。

WebView2

到了 Windows 11,WebView 技术栈大爆炸,从 Electron,再到 React Native 再到现在的 Edge WebView2,众多软件选择转向使用 WebView 以寻求更高效地开发,而不是使用原生技术以提高用户实际体验。对于 Microsoft(非 Windows)而言,开发更倾向于使用开发较为快速的 Edge WebView2,而不是使用原生的 WinUI 框架。
Electron 所构建的应用程序,每个独立应用程序都会附带一个所需要的运行时,硬盘占用上会多出几百兆的占用,内存上若优化不当,则会像在后台多运行了一个浏览器一样多占用了更多的内存。
Edge WebView2 所构建的应用程序,除部分应用程序使用特定的版本外,Windows 会预装一个公共运行时,所有的 Edge WebView2 应用程序都会使用这一公共运行时。相较于 Electron 应用程序,Edge WebView2 应用程序减少了独立运行时这一硬盘开销,内存上若优化不当,也会像在后台多运行了一个浏览器一样多占用了更多的内存。但是在长时间挂起应用程序后,内存的占用基本会得到极大地释放。
对于 EdgeHTML (WebView/WinJS) 构建的应用程序而言,这些应用程序已经极大程度上从 Windows 消失,仅有极小部分还在使用,但是其内存占用极低,几乎与原生持平。

  1. 以“Windows 搜索”为例,在 Edge WebView2 模式,非“效率模式”下正常工作,内存占用可达约 120 MB,挂起时内存占用可降低到约 35 MB

Windows 搜索资源占用

  1. 以“天气”为例,据 Windows Latest 测算,工作状态下可达到约 1.2 GB 的内存占用,挂起时内存占用约 600 MB[1]

基于虚拟化的安全

为提升安全性,Windows 11 24H2 起默认启用了基于虚拟化的安全功能(VBS),该功能引入了新的安全模型,使 Windows 运行更加安全,不易受到恶意软件的侵袭,但其代价是需要额外的内存来运行虚拟化环境。根据 Broadcom 论坛用户反馈,Windows 11 在开启 VBS 时,Secure System 的占用可能高达 2 GB[2],而在正常情况下该进程仅占用约 100 MB 的内存。

参考文献

  1. Windows 11 is a memory hog, even Microsoft’s Weather uses 1.2GB of RAM, 5x more than macOS Weather
  2. Windows Host Increased Memory Usage - VBS Redux | VMware Workstation