很多玩家电脑装的是16GB甚至32GB内存,跑游戏时物理内存占用远未达到满,但连续玩几个小时,系统忽然弹“内存不足”,游戏卡死或崩溃。这看似矛盾,其实是Windows内存模型中的“提交内存”在作怪。
程序运行时,系统会为它分配虚拟地址空间,真正访问数据时才映射到物理内存。操作系统记录的是“提交内存”,即所有进程已经请求但可能尚未使用的内存总量。这个总量可以大于物理内存,因为Windows允许一部分驻留在页面文件里。当提交内存总和达到物理内存与页面文件大小的总和上限,新的内存分配请求就会失败,系统就报内存不足。哪怕此时物理内存还剩好几个GB,因为页面文件已经被填满或者没有足够空间扩展,无法应对继续增长的提交量。
为什么游戏玩久了提交内存会不断膨胀?最常见的原因是内存泄漏。游戏引擎或驱动在循环过程中不断申请内存,却在释放时漏掉一部分。例如某款大型开放世界游戏在旧版本中存在严重的资源泄漏,每运行一小时内存占用增加约2GB,四个小时就能从初始的8GB冲到接近16GB。如果系统页面文件默认只有几GB,总上限就是物理内存加上页面文件,比如16GB物理内存加4GB页面文件,总共20GB。正常开着浏览器、聊天软件再加上系统服务占用,可用余量也就几GB,游戏几分钟内就把余量耗尽,于是报错。这并非物理内存不够,而是提交限制被突破。
另一个隐蔽来源是驱动程序的非页面缓冲池,这是系统内核用于存储无法换出到页面文件的数据。某些网卡驱动或显卡驱动有bug,会在加载大量纹理或网络数据时泄漏非页面缓冲池。这个池有系统预设的上限,接近上限时任何内核内存分配都会失败,导致游戏或者整个系统出现严重错误,甚至蓝屏。任务管理器切换到性能标签,查看内存部分,能看到“非分页缓冲池”的数值。如果这个值在游戏过程中持续上升,不回落,基本可以断定是驱动级泄漏。
还有Windows的“内存分块”机制导致物理内存碎片化,虽然总空闲空间足够,但大块连续内存无法分配,这也会触发内存不足。不过现代虚拟内存机制下这种情况相对少见,主要影响某些老游戏或32位进程。

解决这类问题,最直接的办法是调整虚拟内存设置。在系统属性的高级设置里,取消“自动管理所有驱动器的分页文件大小”,为系统盘和游戏所在盘设置自定义大小,建议设为物理内存的1.5到2倍。比如16GB物理内存,可以设置最小4096MB,最大32768MB,让Windows有足够余量扩展提交内存。但要注意,如果页面文件位于空间很小的SSD,需要保证剩余容量。
更新驱动是另一个关键。显卡驱动和网卡驱动是泄漏重灾区,去厂商官网下载最新版本,往往能修复已知的内存泄漏问题。很多玩家更新驱动后,连续玩十个小时都不再报错。还可以用系统自带的可靠性和性能监视器,添加“Process”计数器,观察游戏进程的“Working Set”和“Private Bytes”,如果这两个值单调递增,就说明游戏本身存在泄漏,只能定期重启游戏或等官方补丁。
如果不想改动系统,玩大型游戏前关闭浏览器、后台播放器等占用内存较多的程序,能腾出更多提交空间。但最根本的还是要找出泄漏源。RAMMap这款微软官方工具可以查看物理内存分配详情,但普通用户只要记得观察任务管理器里“内存”部分的“分页缓冲池”和“非分页缓冲池”数值就好。
最后要清楚,物理内存足够但游戏报内存不足,并不是说RAM容量不够,而是整个虚拟内存系统达到了上限。只要合理扩大页面文件,更新驱动,并了解游戏自身的泄漏规律,这个问题是完全能解决的。如果游戏内存占用曲线像股价一样只涨不跌,那就别抱有侥幸,保存进度重启游戏最稳妥。