Windows虚拟内存配置实战:解决内存不足与OOM指南

Windows虚拟内存配置实战:解决内存不足与OOM指南 写这类配置指南最怕什么最怕给完几个数字就让你“照着填”完全不管你的机器到底是什么负载。可虚拟内存恰恰是那种“同一套参数在不同环境里结果完全不一样”的选项。玩大型游戏、跑 Docker 开发环境、开着浏览器挂着几十个标签页三种场景对内存的压力曲线截然不同。文章标题已经把目标说清楚了从机制聊到实操搞定 Windows 下因为内存不足、OOM 引发的一连串问题。文章内容会覆盖页面文件到底怎么工作、开发机与日常使用最常见的 OOM 触发点、页面文件大小怎么算才科学以及 Win10/Win11 下完整设置步骤和后续验证手段——顺带把 SSD 对虚拟内存的影响、休眠文件与页面文件的纠缠关系这类容易踩的坑也一并拆掉。1. 为什么 Windows 还在用虚拟内存先把页面文件的工作机制讲清楚很多人一看到“虚拟内存”四个字第一反应是“Windows 老古董功能现在内存都 16G/32G 了还用得着吗”。这个误解不仅让不少人在 16GB 内存的机器上强行禁用页面文件还直接导致后续一连串诡异问题软件打开到一半被系统弹窗“内存不足”、后台长时间挂起的程序恢复时直接崩溃、蓝屏死机后连错误转储文件都写不出来。要理解这些得先搞清楚 Windows 的虚拟内存到底是怎么设计的。1.1 物理内存和页面文件各自扮演什么角色Windows 的“虚拟内存”在严格意义上并不是“把硬盘当作内存用”这么简单的粗暴逻辑。系统里存在一个虚拟地址空间的概念——每个 64 位进程可以拥有巨大的地址空间物理内存RAM和页面文件pagefile.sys只是这个地址空间的两种后备存储backing store。CPU 通过内存管理单元MMU把虚拟地址翻译成物理地址如果某个虚拟地址对应的数据不在物理内存里而页面文件有对应内容系统就会触发缺页中断把数据从磁盘换入内存。所以页面文件不是“内存不够才存在的救急方案”而是 Windows 虚拟内存系统的一个固有组成部分。无论你物理内存多大只要系统开启了页面文件它就在承担两类工作一类是腾挪物理内存中不活跃的数据另一类是给崩溃转储、内存映射文件等机制提供存储底座。把 pagefile.sys 整个删掉并不会让你的物理内存“变干净”反而会砍掉系统的一组关键能力。就实际感受而言用户最常见的“虚拟内存相关操作”其实是两类一是调整页面文件大小或位置二是彻底禁用页面文件。前一种操作相对安全后一种则通常不值得推荐。禁用页面文件之后Windows 的提交限制Commit Limit基本就等于物理内存大小一旦进程和内核的提交量超过这条线系统根本没有缓冲地带只能选择中止进程或者直接蓝屏。1.2 OOM 到底是怎么发生的从提交内存到崩溃的完整过程OOMOut Of Memory在 Windows 上不像 Linux 那样一上来就开 OOM Killer。Windows 的崩溃路径更隐蔽也更依赖“提交限制”这个概念。系统允许进程申请占用虚拟地址空间的内存这部分被记录为“已提交”committed;提交量累计不能超过提交限制限制大体由物理内存 页面文件大小组成。当一个大型应用——比如编译前端项目时的 Node.js、启动中的 Elasticsearch、同时加载多个大体积程序的开发环境——向系统申请巨量提交内存时系统会根据当前负载把部分数据写到页面文件。如果提交限制本身就小或者页面文件所在磁盘写入速度不够申请就会失败。表现为两种情况应用直接弹出“内存不足无法继续”的对话框或者运行中的进程被系统强制终止。很多人看见任务管理器里的物理内存还有几个 GB 空闲就不理解“明明内存还够为什么提示内存不足”。这正是提交限制在起作用。任务管理器“性能”页里的“已提交”一栏往往已经顶满而物理内存占用数值却不高。这时最直接有效的办法往往就是扩大页面文件或者找到那个疯狂提交内存的进程。这里有个很典型的测试方法打开任务管理器切到“性能”标签找到底部的“提交”信息——形如“8.2/14.7 GB”。后面的 14.7 GB 就是系统当前的提交限制8.2 GB 是已提交量。如果已提交量经常逼近 14.7 GB那不管物理内存空闲多少系统都已经处于濒临 OOM 的状态。理解了这一条比记住任何参数都重要。2. 那些触发内存不足/OOM 的真实场景开发和日常使用都会遇到虚拟内存配置不是一道数学题而是一道场景题。同一台 16GB 内存的电脑拿来写写文档默认页面文件大小完全够用拿它跑 Docker Desktop再同时启动 Elasticsearch、Kafka、Redis、MySQL 和 IDEA真的会被 OOM 撞个正着。下面按我实际遇到的情况拆成几类你更能对号入座。2.1 开发机上跑 Elasticsearch、Kafka、Docker 有多吃内存先算一笔账。Elasticsearch 默认 JVM 堆内存是物理内存的 1/4一台 16GB 内存的机器ES 默认就能吃掉近 4GBKafka 虽然 JVM 堆不太大但操作系统页缓存会占用巨量内存来缓存消息数据Docker Desktop 在 Windows 上默认会创建一个 Linux 虚拟机默认分配 2~4GB 内存。这三个一起跑物理内存已经被分走大半然后你还要打开 IDEA、浏览器和微信。此时如果页面文件设置偏小或者配置在慢速磁盘上系统就会频繁触发缺页中断整机卡成 PPT极端情况下直接弹出 OOM。这还不算 Node.js、Vite 开发服务器、Maven 构建进程里的大量临时对象分配。曾经我在 Win11 上用 16GB 内存跑一个前后端分离项目前端 Node 进程 后端 Java 服务 MySQL Redis 齐开刚启动还好编译到一半任务管理器里“已提交”直接飙到 15.8GB页面文件所在磁盘是机械硬盘机器就像死机一样。后来把页面文件从 4GB 固定值改成 16GB-24GB 的区间编译过程虽然还是会用到交换但至少不会卡到完全不可用。需要注意的是现代 Windows 即使物理内存还有空闲系统也可能按照自己的策略把一部分已修改内存写回页面文件这是为了预留足够的内存给快速启动新应用。因此在开发环境下把页面文件设得太小或者禁用反而会放大 JVM、浏览器这类“吃内存大户”的崩溃概率。2.2 游戏、浏览器、录屏软件内存白条屡见不鲜的情况日常使用里浏览器才是真正的内存狂魔。几十个标签页看起来都“最小化”了但它们占用的内存并没有完全释放很多后台标签页的页面状态还被保留在内存里。再加上浏览器内置的各种 GPU 进程、渲染进程、扩展进程占用轻松突破 8GB。此时如果再开一个大型游戏物理内存早就溢出Windows 会把大量不活跃的页面写到页面文件。如果页面文件大小不足直接弹出“内存不足”对话框或者游戏加载时闪退。还有一个常被忽略的角色——录屏软件和直播推流软件。它们通常需要锁定一部分内存作为帧缓冲同时编码器又需要额外的内存来排队待处理帧。和游戏叠加在一起瞬时内存需求会瞬间顶到系统提交限制。录屏过程中突然看到 OOM 提示多半不是你“开了太多软件”而是页面文件太小顶不住瞬时尖峰。另外GPU 用得多的应用也要当心。部分应用程序或者某些图形 API 会把一部分 GPU 显存映射到系统内存里管理系统内存一旦吃紧这些应用不仅是卡顿还可能直接崩溃。2.3 如何确认瓶颈在物理内存还是页面文件排查思路上我习惯按顺序看四个地方任务管理器“性能”页的“内存”部分物理内存占用持续 90% 以上同时“可用”只有几百 MB说明物理内存确实吃紧。任务管理器“性能”页底部“提交”如果“已提交”数值贴近“提交限制”说明页面文件尺寸或物理内存总量成为瓶颈。资源监视器“内存”页按“硬错误”排序如果硬错误数量持续飙升说明正在大量换页页面文件所在磁盘的随机读取速度会直接决定卡顿程度。事件查看器 Windows 日志里的应用程序/系统日志出现 Event ID 2004内存不足警告或 Event ID 1018、1020 等资源不足事件基本可以确定是 Windows 资源管理器报告内存不足。很多人一看见“硬错误”Hard Faults数值高就以为是内存坏了这是误区。硬错误本身只是“进程需要的页面不在物理内存里需要从磁盘或页面文件读取”的计数它只代表换页行为不代表故障。只有硬错误极高且持续同时页面文件读写繁忙才能说明物理内存或页面文件容量存在瓶颈。分析这一步时别急着重启或清内存先把现象找准确。3. 虚拟内存大小怎么定分场景给出配置建议“虚拟内存到底设置多少”是社区里问得最频繁的问题。网上的说法五花八门有人说“初始 1.5 倍、最大 3 倍物理内存”有人说“16GB 内存设 8GB 就够”还有人干脆说“直接禁用”。这些说法都有各自的适用前提但放在统一的背景下很容易误导人。我建议用一套更通用的思路先估出系统内最低内存需求量再结合页面文件的作用来决定尺寸。3.1 拿张纸算清楚根据内存池和负载确定页面文件大小设页面文件大小不能只盯着物理内存倍数得先看软件负载。简单估算步骤如下统计你日常同时开着的应用估算一个“常驻工作集”总量。比如 IDA 或 IDEA 这类开发工具约 1.5~2.5GB浏览器 20 个标签页约 3~5GBNode 进程约 1~2GBDocker 虚拟机约 2~4GB办公套件约 1~2GB。把这些加起来得到一个“物理内存需求基线”。拿“物理内存总量”减去基线。如果结果是负数说明你的物理内存覆盖不了常用负载页面文件必须承担一部分。如果结果为正页面文件主要用来应对突发尖峰与崩溃转储可以设置得保守一些。决定你的容忍度。如果完全不想看到 OOM就把“物理内存需求基线”加上 4GB 左右视为目标“有效内存”页面文件大小取“目标有效内存减去物理内存总量”的差额。例如 16GB 物理内存但常见负载需要 22GB那页面文件至少需要 6GB再考虑到高峰期往上加一点设置 8GB~12GB 比较稳妥。这比“无脑 1.5 倍”靠谱因为 64GB 内存的机器日常负载可能只有 12GB非要设置成 96GB 的页面文件纯粹浪费磁盘而 8GB 内存的机器跑大型应用设置 12GB 页面文件反而刚需。3.2 典型场景配置推荐16GB/32GB/64GB 等物理内存典型场景页面文件初始值页面文件最大值备注8GB旧电脑 / 基础办公 / 轻度浏览器4096 MB8192 MB轻量办公可接受但跑大型应用建议考虑升级内存16GB开发、MMO 游戏、浏览器多开8192 MB16384 MB若常跑 Docker/ES/IDEA最大值设到 24576 MB 更稳32GB重度开发 / 视频剪辑 / 大型游戏4096 MB8192 MB常见负载基本够用页面文件主要兜底尖峰与转储64GB工作站 / 虚拟机多开2048 MB4096 MB页面文件不建议完全禁用仍要留崩溃转储与提交余量这张表只是一个起点。真正的判断依据还是第 3.1 节里“负载基线”计算法。我个人更推荐设置“自定义大小”同时把初始值和最大值设成同一个数值而不是让系统动态伸缩。页面文件动态增长在磁盘上容易产生碎片而且如果系统的“自动管理所有驱动器分页文件大小”开启很多参数会被系统自动覆盖导致你的自定义配置形同虚设。3.3 为什么“关闭虚拟内存”在多数情况下是个坏主意我见过很多教程建议 32GB 甚至 16GB 内存用户直接禁用页面文件理由是“物理内存够大就不再需要交换”。但实际运行中这套配置会引入几个隐性问题一是崩溃转储会失效。Windows 在发生蓝屏时要写转储文件默认要求系统盘存在页面文件。如果你把页面文件全部禁用蓝屏时可能无法生成 memory.dmp排查蓝屏原因基本无从下手。二是内存压缩机制受影响。Windows 10/11 默认启用内存压缩在物理内存吃紧时会把压缩的内存页面保留在物理内存里。页面文件缺失时系统会更依赖内存压缩而压缩和解压缩本身就消耗 CPU 周期导致整机响应变慢。三是有部分软件会跳过内存压缩直接要求系统提交较大内存块比如某些科学计算库、大型 Java 应用。提交限制不够时直接申请失败孤立的进程崩溃还算小事如果刚好是系统服务就可能引发一连串连锁故障。必要的时候可以考虑“无页面文件”除了系统盘 C 盘外再给 D 盘或其他盘分配一个页面文件。这样既保留提交限制与崩溃转储能力又不让所有换页流量集中压在一颗系统盘上。4. Windows 10/11 虚拟内存设置的完整实操步骤设定值之外更关键的是知道 Windows 里每一步操作到底对应哪个设置项。很多人点开“高级系统设置”就迷路了或者在“自定义大小”里填完数值却发现系统根本没按这个走原因多半是没有关掉“自动管理所有驱动器的分页文件大小”。下面按图形界面和命令行两条路径把完整流程捋一遍。4.1 图形界面配置流程从系统属性到重启验证Win10/Win11 路径基本一致右键“此电脑”或“这台电脑”选择“属性”点左侧“高级系统设置”。在弹出的“系统属性”窗口切到“高级”选项卡点“性能”区域的“设置”。在“性能选项”窗口里切到“高级”选项卡点“虚拟内存”区域的“更改”。默认情况下“自动管理所有驱动器的分页文件大小”是勾选的。先取消这个勾选。选中 C 盘或者你想放页面文件的盘选择“自定义大小”填入初始大小和最大值单位 MB。点“设置”此时“页面文件”列表里 C 盘后面会出现你填的数值范围。点“确定”后系统通常提示需要重启才能生效。重启后可以回到对话框检查是否生效。有一个很多人忽略的细节如果 C 盘本身剩余空间偏小建议把页面文件放到另一块物理硬盘上最好是独立的 SSD避免和系统盘抢随机读写。例如开发机 C 盘是系统D 盘是 SSD页面文件放在 D 盘就能避免编译时系统盘和页面文件读写互相争抢。在图形界面里还可以让 Windows“系统管理的大小”自动维护但注意这跟“自动管理所有驱动器的分页文件大小”是两个选项。前者指“该驱动器使用系统管理的动态大小”后者是“所有驱动器都由系统自动管理”。如果你希望自定义单个盘的页面文件两者都要处理好。4.2 用命令行/脚本设置页面文件适合批量部署和远程管理对于有一定规模的企业运维或者个人想快速设置的场景命令行方式更可靠。Windows 下可以通过 Windows Management InstrumentationWMI类 Win32_PageFileSetting 来查询与设置页面文件。常用命令如下查询当前页面文件配置wmic pagefile list /format:list设置页面文件初始大小和最大值需要管理员权限wmic pagefileset where nameC:\\pagefile.sys set InitialSize8192,MaximumSize16384如果你的系统盘不是 C或者页面文件在 D 盘要把 where 条件里的路径替换成实际路径。还有一条更接近底层的方式是修改注册表reg query HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management这个注册表项下面有一个“PagingFiles”多字符串值形如“C:\pagefile.sys 8192 16384”。直接修改这个值同样可以设定多个盘的页面文件例如C:\pagefile.sys 8192 16384 D:\pagefile.sys 4096 8192但修改注册表之后必须重启才能让系统重新读取配置而某些系统服务可能出现“配置已改但旧值还在用”的中间状态远程维护时容易造成误解。相比之下图形界面或 wmic 的变更流程会让系统在写入配置的同时重启相关组件所以如果条件允许优先在本地图形界面做。另外PowerShell 用户可以借助 Get-CimInstance 和 Set-CimInstance 来做类似操作但命令细节略啰嗦。这里给一个脚本思路先读取当前 Win32_PageFileSetting再判断是否存在要修改的路径不存在则新增一条。批处理或 PowerShell 脚本适合批量装机时统一推送。4.3 让修改生效的验证方式改完设置很多人重启完就以为完事了。其实验证生效的路径很简单打开“性能选项”里的虚拟内存对话框查看当前“页面文件”列表确认 C 盘后面显示的数值是你填的初始值和最大值。其次打开任务管理器性能页查看“提交”一栏右侧的“提交限制”。如果这个数字大致等于物理内存总和加上你设置的页面文件初始值就说明系统已经识别了新配置。更严格一点的验证是观察“资源监视器”里的磁盘活动和内存硬错误。如果页面文件所在磁盘的读写百分比飙到很高说明系统正在大量使用页面文件如果一直很低说明你的物理内存足够充裕页面文件只是作为冗余兜底。对于开发机我通常会在配置完页面文件后跑一次之前引发 OOM 的操作比如同时启动 Docker 内的 ES、Kafka观察是否还会报内存不足。用真实负载压一遍比看多少次理论数值都管用。在远程服务器上配置完页面文件后重启是个敏感操作建议先确认这台机器没有正在执行的关键任务。如果因为怕重启而不敢改页面文件配置就会一直停留在旧状态这也是不少线上环境“改了没生效”的常见解释。5. 常见坑和排查经验设置不生效、蓝屏、休眠失败等这部分是我踩坑最多的地方也是网上教程通常一笔带过的部分。页面文件设置虽然只是几个字段但 Windows 里跟它相关的机制不少一个没处理好就会出现“改了半天还是老样子”的既视感。5.1 修改页面文件后“不生效”的常见原因与排查链路先给出一条排查链路按顺序走基本能定位绝大多数虚拟内存配置不生效原因确认没有勾选“自动管理所有驱动器的分页文件大小”。这个开关一旦开启你的自定义大小随时可能被系统覆盖。不少用户把页面文件从 C 盘挪到 D 盘过段时间发现 C 盘又出现新页面文件就是这个开关在自动重置。确认驱动器剩余空间足够。如果设置初始大小 16GB但 C 盘剩余只有 5GB系统会直接忽略你的设定并可能在事件日志中写一条“页面文件配置失败”警告。确认没有第三方优化软件或优化脚本“自觉”关闭或重置页面文件。某些清理工具会扫描系统盘时顺手修改分页文件设置。重启系统。修改页面文件之后旧配置常常会保留到下一次重启前尤其当页面文件正被系统使用时Windows 会推迟变更。别以为图形界面点个“确定”就立刻全盘生效。用注册表查询实际生效值。如果注册表里的 PagingFiles 已经变成你设置的新值任务管理器里的提交限制也变化了那就是成功了。如果注册表没变说明系统并未接受你的写入要么是权限不够要么是仍有程序锁定了页面文件。5.2 SSD、碎片化和系统盘空间虚拟内存和磁盘健康的关系机械硬盘时代把页面文件放在独立分区是有实际意义的可以减少磁头移动降低换页延迟。到了 SSD 时代很多人觉得“反正都快”于是随意放。但实际上 SSD 的随机读写速度虽然远快于机械硬盘仍然远慢于物理内存。当页面文件被频繁读写时SSD 的 4K 随机性能也会成为瓶颈而且持续大量写入会加快 SSD 寿命衰减。所以虚拟内存使用策略上第一条原则永远是“能靠物理内存扛的就别强行靠交换”.那 SSD 上怎么设置页面文件最合理经验是初始大小和最大值设成一致避免动态伸缩产生文件碎片页面文件不要和系统镜像、休眠文件挤在同一颗小容量系统盘上如果你有第二块 SSD把页面文件放第二块盘和系统盘进行分工能明显降低编译或游戏加载时的响应延迟。同时注意系统盘剩余空间不能太紧。页面文件 休眠文件 WinSxS 系统组件占用容易被忽视我在 256GB 系统盘上装完开发环境后可用空间经常只剩 20%这时候再往 C 盘塞 16GB 页面文件往往导致磁盘可用空间瞬间告警。在这种情况下把页面文件移到 D 盘或者调小最大值是更稳妥的选择。5.3 和虚拟内存相关的另外几个 Windows 机制休眠、转储、内存压缩Windows 休眠功能依赖休眠文件 hiberfil.sys它在物理内存很大时会占据和物理内存大小相近的磁盘空间。默认开启休眠的机器32GB 内存会让系统盘少 32GB 左右可用空间。很多人想不通“怎么设置完页面文件后磁盘空间更少了”很可能就是忘了计算休眠文件。如果笔记本不需要休眠可以用 powercfg /h off 关掉休眠文件释放空间台式机如果长期开机休眠意义也没那么大。崩溃转储也与页面文件深度绑定。系统蓝屏时如果页面文件不够大可能只能写出一个小体积转储无法记录完整内存现场。如果工作需要排查蓝屏原因建议把页面文件最大值设置到接近物理内存大小至少不能比物理内存小太多。这也是为什么我前面不推荐“禁用到一点页面文件都不留”的原因——为了能诊断问题也得留点余量。Windows 10/11 的内存压缩机制则是另一个容易被误解的软交换。它把一组页面压缩后放在物理内存里相当于在物理内存里“挤”出更多有效空间但它并不会代替页面文件。如果物理内存濒临耗尽内存压缩会先行启用此时任务管理器里“内存”性能图会出现一个“已压缩”数值。如果这个数值长期很大说明系统物理内存吃紧而页面文件的换页可能也在同步发生。理解这个机制有助于区分“卡顿来源”到底是压缩算法带来的 CPU 开销还是磁盘换页带来的 IO 等待。6. 从根源解决内存压力虚拟内存无法替代的物理内存优化页面文件说到底是个“缓冲”并不是“无限容量”。就算你把页面文件调到 64GB物理内存不足时系统的大量换页也会让所有磁盘不堪重负。要真正解决内存不足与 OOM 问题绝不是“调大页面文件”这一个动作就能一劳永逸的还得从应用层、系统层和物理硬件三个方向同时下手。6.1 按需排查内存占用先杀掉“无意识的内存黑洞”Windows 的很多内存占用是后台服务和无感知计划任务带来的。开机一段时间后许多软件驻留进程、更新服务、云盘同步客户端都会悄悄吃内存。做一次“内存干净化”往往比调几 GB 页面文件更见效打开任务管理器“启动”页禁用掉不常用的开机启动项。云盘、录屏快捷键、远程控制软件等不是每天都要自动启动。关注浏览器扩展。每一个浏览器扩展都相当于一个常驻进程装了几十个插件的浏览器动辄吃掉 5~6GB 内存。建议删掉不再用的扩展或者启用浏览器的“睡眠标签页”功能。关闭后台运行的不必要服务。Windows 的 SysMain原 Superfetch服务在一些低配机器上会预加载常用应用导致内存升高。系统盘是机械硬盘时可以尝试禁用但如果系统盘是 SSD保持默认通常更好因为预加载对 SSD 影响不大禁用了反而可能拖慢常用软件启动速度。对于开发环境要养成按项目关闭多余进程的习惯。IDEA 不用的项目窗口、Docker 里不用的容器、本机 SQL Server 和 MySQL 服务如果长期不用都可以改成手动启动类型。6.2 用系统自带工具给内存“减负”资源监视器和任务管理器除了清理启动项Windows 的内存诊断和资源监视器也可以帮忙判断是哪个进程泄漏。任务管理器按“内存”排序后能找到吃内存的大户资源监视器“内存”页的“硬错误/秒”能直接反映换页压力。如果某个进程的“内存专用工作集”持续上升且不回落比如浏览器跑几天后占用涨了几倍这大概率就是内存泄漏。此时重启那个应用就能释放不用重启整机。而一些 Java 应用如果堆设置不合理比如启动参数给了 -Xmx8g但平时只用到 2GB也会白白占住系统内存。调整这类应用的 JVM 堆参数比整体加大页面文件更能缓解内存压力。一个很实用的做法用“性能监视器”perfmon添加计数器记录“Memory\Committed Bytes”和“Memory\Commit Limit”连续观察几天如果“Committed Bytes”在你正常负载下经常超过“Commit Limit”的 80%就该考虑扩大页面文件或物理内存。有了数据以后再调参数就不是拍脑袋了。6.3 什么情况下该升级物理内存虚拟内存解决不了的问题虚拟内存再大本质上也是拿磁盘速度兜底。凡是涉及大量随机访问、编译、视频渲染、内存数据库缓存之类的工作负载页面文件频繁换页都会造成极大性能损失。一个直观感受是16GB 内存机器上跑大型编译任务如果系统硬错误持续飙到每秒几百次机器会卡到鼠标都挪不动。此时把页面文件从 8GB 加到 32GB只会让“不崩溃但依然卡顿”持续更久并不会让性能提升到可用水平。所以我的经验判断标准是如果开完常用软件后物理内存占用稳定超过 85%同时页面文件所在磁盘的读写率经常超过 60%那就说明真实的物理内存容量已经不够用了。这时候最合理的投资是增加一条内存条或者换更大容量内存而不是继续折腾页面文件。页面文件适合应对“瞬时尖峰”或“低频大块加载”不适合替代“常态性内存短缺”。对于笔记本用户无法扩展内存时调整页面文件和限制后台应用是仅有的优化空间对于台式机用户加内存往往是性价比最高的“虚拟内存优化方案”。我还想提一个很多人忽视的细节加完物理内存后记得回头把之前手动调大的页面文件适当调小。有些人加内存前把页面文件设成了 32GB加完内存后还是 32GB结果白白占着 SSD 几十 GB 空间。物理内存扩容后页面文件缩减到系统管理大小或较小自定值通常就能满足需求。总归一句话虚拟内存配置要做但不能只做虚拟内存。先把占用大户理清楚再根据真实负载给页面文件一个合理的“安全垫”最后才考虑是否需要升级物理内存。这三步走完Windows 下的内存不足和 OOM 问题基本都能控制在可接受范围内。最后分享一个我自己常用的检查习惯每个月查看一次任务管理器的“提交”使用率如果长期超过 80%就翻开资源监视器看看硬错误和占用大户。这种定期体检比出了问题再临时调页面文件省心得多。配置虚拟内存本身不难难的是搞清楚自己的机器到底缺的是“容量”还是“速度”——这两者的解法完全不同。希望这篇文章能帮你把问题看得更清楚少走一些我当年走过的弯路。