6人参与 • 2026-09-07 • Windows
你正在用一台 16gb 内存的笔记本同时跑着一个大型项目:visual studio 打开着一个包含数十个子模块的解决方案,chrome 浏览器挂着三十多个标签页用于查阅文档,docker desktop 里跑着三个容器,微信、钉钉、企业微信在后台常驻,偶尔还要切到 photoshop 处理一张设计稿。
突然,visual studio 弹出一个对话框:"内存不足,无法完成此操作。“紧接着,docker 容器被强制终止,chrome 某个标签页显示"喔唷,崩溃啦”。你打开任务管理器,发现"已提交"内存已经逼近上限,物理内存占用率 97%,分页文件使用率也在快速攀升。
这就是典型的 oom(out of memory,内存溢出) 场景。
这类问题在开发、设计、视频剪辑、游戏、虚拟机、ai 推理等场景中极为常见。而解决它最直接、最立竿见影的手段,就是合理配置 windows 虚拟内存(页面文件)。
本文将系统、完整地讲解 windows 虚拟内存的工作原理、配置方法、参数选择、性能影响、故障排查等方方面面,帮助你在遇到内存不足问题时,能够从容应对、精准施策。
虚拟内存(virtual memory)是操作系统提供的一种内存管理技术。它让每个进程都拥有独立的、连续的虚拟地址空间,而实际的数据可以分散存储在物理内存(ram)和磁盘上的页面文件中。对应用程序而言,它"看到"的是一块连续的、远大于实际物理内存的地址空间;而操作系统在背后负责将虚拟地址映射到真实的物理位置。
在 windows 中,虚拟内存的实现依赖于两个核心组件:
pagefile.sys 文件,作为物理内存的延伸和后备。两者共同构成了系统的"提交内存"(committed memory)池。
windows 采用请求分页式虚拟内存管理(demand paging)。其核心流程如下:
地址映射:每个进程的虚拟地址空间被划分为固定大小的"页"(page),windows 上标准页大小为 4kb(也支持 2mb 和 1gb 的大页)。页表(page table)记录了每一页对应的物理内存帧号,或者标记该页当前不在物理内存中。
内存分配:当进程申请内存时(如调用 malloc、virtualalloc),系统先在其虚拟地址空间中预留一段区域(reserve),再按需提交(commit)。提交时,系统检查"已提交总量"是否超过"提交限制"(commit limit)。
页面置换:当物理内存接近满载时,windows 内存管理器(memory manager)会根据页面置换策略(基于优先级、访问频率、修改状态等),选择一批"冷"页面写入磁盘上的页面文件,释放对应的物理内存帧。
缺页中断(page fault):当进程再次访问一个已被换出到磁盘的页面时,cpu 会触发缺页中断。操作系统捕获该中断,将所需页面从页面文件读回物理内存,然后恢复进程执行。
硬缺页与软缺页:
页面文件是虚拟内存在磁盘上的物理载体。其关键特征如下:
c:\pagefile.sys。这是理解 oom 的关键概念。
提交限制(commit limit)= 物理内存总量 + 所有页面文件总量
当系统中所有进程的"已提交内存"总和达到提交限制时,任何新的内存分配请求都将被系统拒绝,应用程序会收到 status_no_memory 或 error_not_enough_memory 错误,表现为"内存不足"或"out of memory"。
因此,增大页面文件,本质上就是在提高提交限制,从而允许系统承载更多的内存分配请求,避免在高负载下触发 oom。
每个进程在任意时刻实际驻留在物理内存中的页面集合称为"工作集"。windows 内存管理器会定期对工作集进行"修剪"(trim),将不活跃的页面标记为可换出候选。修剪策略受以下因素影响:
这一点必须反复强调:虚拟内存的性能远低于物理内存。
| 指标 | ddr4/ddr5 内存 | sata ssd | nvme ssd(pcie 4.0) |
|---|---|---|---|
| 随机访问延迟 | ~100 纳秒 | ~50–100 微秒 | ~10–30 微秒 |
| 顺序读取带宽 | 25,000–50,000 mb/s | ~550 mb/s | 3,500–7,500 mb/s |
| 随机写入 iops | 数亿级 | 50,000–100,000 | 200,000–1,000,000 |
内存与 ssd 之间的延迟差距在 数百倍到上千倍 量级。当系统频繁发生硬缺页中断时,用户会明显感受到卡顿、响应迟缓、硬盘指示灯常亮。虚拟内存的作用是"兜底"和"缓冲",防止系统在内存紧张时直接崩溃,而非替代物理内存提供高性能计算能力。
按 ctrl + shift + esc 打开任务管理器,切换到 “性能” 选项卡,点击左侧 “内存”。重点关注以下指标:
判断标准:
按 win + r,输入 resmon,回车。在 “内存” 选项卡中可以看到:
按 win + r,输入 perfmon,回车。创建一个新的"数据收集器集",添加以下计数器进行持续监控(建议采样间隔 5 秒,持续运行 30 分钟以上):
| 计数器路径 | 含义 | 告警阈值 |
|---|---|---|
memory\available mbytes | 可用物理内存(mb) | 持续 < 500 |
memory\committed bytes | 已提交内存总量 | 接近 commit limit |
memory\commit limit | 提交限制上限 | — |
memory\% committed bytes in use | 已提交内存占提交限制的百分比 | 持续 > 85% |
paging file\% usage | 页面文件使用率 | 持续 > 80% |
memory\pages/sec | 每秒换入换出的页面总数 | 持续 > 1000 |
memory\page faults/sec | 每秒缺页中断总数 | 持续 > 5000 |
memory\hard faults/sec | 每秒硬缺页中断数 | 持续 > 100 |
physicaldisk\% disk time | 磁盘忙碌百分比 | 持续 > 90% |
通过分析这些数据,可以精确判断内存瓶颈的程度和发生时机。
按 win + r,输入 eventvwr.msc,回车。
另外,在 “应用程序日志” 中筛选"application error",可以看到程序因内存不足而崩溃的详细记录。
以管理员身份打开 powershell,执行:
# 查看物理内存总量(gb) (get-ciminstance win32_computersystem).totalphysicalmemory / 1gb # 查看可用物理内存(gb) (get-ciminstance win32_operatingsystem).freephysicalmemory / 1mb # 查看页面文件配置 get-ciminstance win32_pagefilesetting | format-list name, initialsize, maximumsize # 查看页面文件当前使用量 get-ciminstance win32_pagefileusage | format-list name, allocatedbasesize, currentusage, peakusage # 查看提交限制与已提交内存 $os = get-ciminstance win32_operatingsystem write-host "已提交内存: $([math]::round($os.totalvirtualmemorysize / 1mb, 2)) gb" write-host "可用虚拟内存: $([math]::round($os.freevirtualmemory / 1mb, 2)) gb"
以下操作适用于 windows 10(1903 及以后版本) 和 windows 11(21h2 / 22h2 / 23h2 / 24h2)。windows server 2016 / 2019 / 2022 / 2025 的操作路径基本一致。
方式一:通过"运行"对话框(最快捷,推荐)
按下键盘快捷键 win + r,打开"运行"对话框。
在输入框中输入 sysdm.cpl。

按 回车 或点击"确定"。
系统弹出 “系统属性” 窗口。
点击顶部的 “高级” 选项卡。

在 “性能” 区域,点击 “设置” 按钮。
弹出 “性能选项” 窗口。
点击顶部的 “高级” 选项卡。
在 “虚拟内存” 区域,点击 “更改” 按钮。

弹出 “虚拟内存” 设置窗口。

方式二:通过"设置"应用
windows 11:
win + i 打开"设置"。windows 10:
win + i 打开"设置"。方式三:通过搜索
win + s 或点击任务栏搜索图标。方式四:通过右键"此电脑"
方式五:通过控制面板
win + r,输入 control,回车。提示:无论通过哪种方式进入,最终都会到达同一个"虚拟内存"设置窗口。选择你最顺手的方式即可。
进入"虚拟内存"窗口后,你会看到窗口顶部有一个复选框:
自动管理所有驱动器的分页文件大小
第一步操作:取消勾选此复选框。
取消勾选后,下方的磁盘分区列表将从灰色不可操作状态变为可选状态,你可以对每个磁盘分区单独配置页面文件策略。
为什么要取消自动管理?
windows 的"自动管理"模式会根据当前内存使用情况动态调整页面文件大小。初始大小通常为物理内存的 1 倍,最大可扩展到约 3 倍。这种模式对大多数普通用户来说足够,但存在以下局限:
因此,如果你经常遇到 oom,强烈建议使用"自定义大小"手动配置。
在驱动器列表中,你会看到系统中所有的磁盘分区(c:、d:、e: 等),每个分区后面显示其当前的页面文件配置状态。
点击选中你希望放置页面文件的磁盘分区。
磁盘选择原则(按优先级排序)
| 优先级 | 磁盘类型 | 说明 |
|---|---|---|
| ★★★★★ | nvme ssd(pcie 3.0/4.0/5.0) | 随机读写延迟最低(10–30μs),页面交换性能最佳 |
| ★★★★ | sata ssd | 延迟约 50–100μs,性能良好 |
| ★★★ | 系统盘(c:),如果是 ssd | 默认位置,无需额外配置 |
| ★★ | 系统盘(c:),如果是 hdd | 可用但性能较差 |
| ★ | 独立机械硬盘(hdd) | 不推荐,高延迟会严重拖慢页面交换 |
| ✗ | u 盘、sd 卡、网络驱动器 | 禁止使用,不可靠且性能极差 |
| ✗ | refs 格式分区 | 不支持页面文件 |
| ✗ | 可移动存储设备 | 不支持页面文件 |
核心原则:页面文件必须放在 ssd 上。 如果系统盘是 ssd,放在 c 盘即可;如果系统盘是 hdd 而有独立的 ssd,应将页面文件迁移到 ssd 上。
选中目标磁盘后,在下方有四个选项可供选择:
选项一:自定义大小(推荐用于解决 oom)
选择此项后,需要填写两个输入框(单位均为 mb):
填写完毕后,必须点击右侧的"设置"按钮。
这是最容易被遗漏的一步。 很多用户填完数值后直接点"确定",结果配置并未保存。必须先点"设置",看到分区后面的状态文字更新为你设定的数值,才表示该分区的配置已暂存成功。
选项二:系统管理的大小
选择此项后,由 windows 自动决定该分区上页面文件的大小。系统会根据当前内存使用情况和历史峰值动态调整,初始大小通常为物理内存的 1 倍,最大可扩展到约 3 倍。
适用场景:你不想手动计算数值,或者对当前配置没有特殊要求。
选项三:无分页文件
选择此项后,该分区上将不创建页面文件。如果之前有页面文件,重启后会被删除。
警告:不要在所有分区上都选择此项。 至少保留一个分区有页面文件。完全禁用页面文件的后果将在后文"常见误区"章节详述。
选项四:仅保留当前分区(配合其他分区使用)
如果你有多个分区,可以在某些分区上选择"无分页文件",将页面文件集中到性能最好的一个或两个 ssd 分区上。
在"自定义大小"模式下,你需要决定初始大小和最大值的具体数字。以下给出详细的计算方法和推荐值(详见第五章),此处先说明操作:
注意:初始大小不能为 0,最大值不能小于初始大小。系统允许的最小页面文件为 16 mb(用于生成最小转储),最大不超过该分区可用空间。
如果你有多个磁盘分区,需要逐一配置:
例如:你有 c:(ssd 256gb)和 d:(hdd 1tb),应选中 c: 设置自定义大小,选中 d: 选择"无分页文件",分别点击"设置"。
所有分区配置完毕后,点击窗口底部的 “确定” 按钮。
系统会弹出一个提示框:
“必须重新启动计算机才能使更改生效。如果未重新启动,更改将不会生效。是否要立即重新启动?”
如果你当前有未保存的工作,选择 “否”,稍后手动重启。
如果没有需要保存的内容,选择 “是”,立即重启。
重要:虚拟内存的配置修改必须重启后才能生效。不重启的话,新的页面文件不会被创建或调整,旧配置仍然在运行。
重启完成后,建议通过以下方式验证配置是否真正生效:
验证一:重新进入设置界面
按照 4.1 的步骤重新打开"虚拟内存"窗口,检查各分区的配置是否与你设定的一致。
验证二:任务管理器确认提交限制
ctrl + shift + esc 打开任务管理器。x / y gb,其中 y 就是当前的提交限制(物理内存 + 页面文件)。验证三:查看页面文件实际大小
以管理员身份打开 powershell:
get-ciminstance win32_pagefileusage | select-object name, allocatedbasesize, currentusage, peakusage
确认 allocatedbasesize 是否等于你设定的初始大小。
验证四:文件资源管理器确认(可选)
c:\)。pagefile.sys 文件,右键查看其大小。根据微软官方技术文档、windows 性能团队的建议,以及大量实测数据,以下是各内存容量下的推荐配置:
| 物理内存 | 初始大小(mb) | 最大值(mb) | 初始/物理比 | 最大/物理比 | 适用场景 |
|---|---|---|---|---|---|
| 4 gb | 6144 | 8192 | 1.5× | 2× | 极轻量办公,老旧设备 |
| 8 gb | 12288 | 16384 ~ 24576 | 1.5× | 2~3× | 日常办公、网页浏览、轻度多任务 |
| 16 gb | 16384 | 24576 ~ 32768 | 1× | 1.5~2× | 主流配置,中度开发、设计、游戏 |
| 32 gb | 16384 ~ 32768 | 32768 ~ 49152 | 0.5~1× | 1~1.5× | 重度多任务、视频剪辑、虚拟机 |
| 64 gb | 16384 | 32768 | 0.25× | 0.5× | 专业工作站、大型开发环境 |
| 128 gb 及以上 | 8192 | 16384 | — | — | 大内存服务器,页面文件仅作应急缓冲 |
说明:
策略一:初始大小 = 最大值(推荐)
策略二:初始大小 < 最大值
策略三:使用"系统管理的大小"
综合建议:如果你是为了解决 oom 问题而配置虚拟内存,优先选择策略一(初始 = 最大),确保系统在启动时就拥有充足的提交空间,不会因动态扩展不及时而再次 oom。
场景一:运行大型虚拟机(vmware workstation / virtualbox / hyper-v)
虚拟机通常会预留固定的物理内存给 guest os。如果你同时运行 2~3 个虚拟机,每个分配 8gb,宿主机自身还需要 4~6gb,那么 32gb 物理内存可能刚好够用或略有不足。
场景二:视频剪辑与 3d 渲染(premiere pro / after effects / davinci resolve / blender / cinema 4d)
这类软件在处理大型项目、高分辨率素材、复杂特效时,内存占用可轻松突破 32gb 甚至 64gb。
场景三:ai / 深度学习(pytorch / tensorflow / stable diffusion / comfyui)
需要区分两种情况:
场景四:大型 3a 游戏
现代 3a 游戏(如《赛博朋克 2077》《艾尔登法环》《星空》等)通常占用 12~20gb 内存,加上系统后台、语音软件、游戏内覆盖层(如 discord、steam overlay),16gb 内存可能捉襟见肘。
场景五:开发环境(ide + 编译器 + 容器 + 浏览器)
visual studio / intellij idea / vs code + docker desktop + wsl2 + 多个浏览器实例同时运行,内存消耗极大。
docker system prune)和 wsl 实例(wsl --shutdown),它们会在后台持续占用内存。场景六:数据库开发(sql server / mysql / postgresql)
数据库服务(尤其是 sql server)会尽可能多地占用内存作为缓存。
直接将页面文件放在该磁盘上,按上述推荐配置即可。
有两种方案:
方案 a:集中放置(简单推荐)
方案 b:分散放置(性能优化)
实测参考:在 pcie 4.0 nvme ssd 上,页面交换延迟比机械硬盘降低约 68%。如果两块 ssd 均为 nvme 且位于不同的 pcie 通道上,分散放置可以进一步降低延迟。
如果你的系统盘(c:)空间紧张(如只有 128gb 或 256gb),可以将页面文件迁移到其他空间充裕的 ssd 分区:
注意:迁移后,如果目标盘被意外断开或损坏,系统将没有页面文件可用。确保目标盘是内置硬盘而非外接设备。
警告:修改注册表存在风险。操作前请务必备份注册表(文件 → 导出)或创建系统还原点。错误的修改可能导致系统无法启动。
路径:hkey_local_machine\system\currentcontrolset\control\session manager\memory management
键值:pagingfiles(类型:reg_multi_sz)
格式:每行一个条目,格式为 路径 初始大小 最大值(大小单位为 mb,0 0 表示"系统管理的大小")。
示例:
c:\pagefile.sys 16384 32768
表示在 c 盘创建页面文件,初始 16gb,最大 32gb。
多页面文件示例:
c:\pagefile.sys 16384 16384 d:\pagefile.sys 8192 8192
表示在 c 盘和 d 盘各创建一个固定大小的页面文件。
同一路径下,键值 crashdumpenabled(类型:reg_dword):
| 值 | 含义 | 说明 |
|---|---|---|
| 0 | 无转储 | 蓝屏时不生成任何转储文件 |
| 1 | 完整内存转储 | 转储全部物理内存内容,文件极大 |
| 2 | 内核内存转储 | 仅转储内核和驱动使用的内存(推荐) |
| 3 | 小内存转储(256kb) | 仅保存最基本的崩溃信息 |
| 7 | 自动内存转储(默认) | 系统自动选择合适的转储类型 |
如果你需要分析蓝屏(bsod)原因,建议保留至少"内核内存转储"(值为 2)。这要求页面文件不能太小(至少 800mb 以上),否则转储文件可能无法完整写入。
同一路径下,键值 clearpagefileatshutdown(类型:reg_dword):
| 值 | 行为 |
|---|---|
| 0(默认) | 关机时不清除页面文件内容 |
| 1 | 关机时将页面文件全部内容覆写为 0 |
按 win + r,输入 gpedit.msc,回车(仅限 windows pro / enterprise / education 版本)。
路径:计算机配置 → windows 设置 → 安全设置 → 本地策略 → 安全选项
“关机:清理虚拟内存页面文件”:对应注册表中的 clearpagefileatshutdown。
对于需要在多台机器上统一配置的 it 管理员,手动逐台操作显然不现实。以下提供命令行和 powershell 的自动化配置方法。
注意:wmic 在 windows 11 24h2 中已被标记为弃用,但在 windows 10 和 windows server 中仍然可用。建议逐步迁移到 powershell 方式。
以管理员身份打开命令提示符(cmd):
:: 第一步:关闭自动管理 wmic computersystem set automaticmanagedpagefile=false :: 第二步:查看当前页面文件配置 wmic pagefile list /format:list :: 第三步:修改已有页面文件的大小(c盘,初始16384,最大32768) wmic pagefileset where name="c:\\pagefile.sys" set initialsize=16384,maximumsize=32768 :: 第四步:如需在新分区创建页面文件(d盘) wmic pagefileset create name="d:\\pagefile.sys" wmic pagefileset where name="d:\\pagefile.sys" set initialsize=8192,maximumsize=16384 :: 第五步:删除某个分区上的页面文件 wmic pagefileset where name="d:\\pagefile.sys" delete
以管理员身份打开 powershell:
# ========== 第一步:关闭自动管理 ==========
$cs = get-ciminstance -classname win32_computersystem
set-ciminstance -inputobject $cs -property @{automaticmanagedpagefile = $false}
# ========== 第二步:删除所有已有的页面文件配置 ==========
get-ciminstance -classname win32_pagefilesetting | remove-ciminstance
# ========== 第三步:创建新的页面文件配置 ==========
# 示例:在 c 盘创建,初始 16384mb,最大 32768mb
new-ciminstance -classname win32_pagefilesetting -property @{
name = "c:\pagefile.sys"
initialsize = 16384
maximumsize = 32768
}
# 如需在 d 盘也创建一个(可选)
# new-ciminstance -classname win32_pagefilesetting -property @{
# name = "d:\pagefile.sys"
# initialsize = 8192
# maximumsize = 16384
# }
# ========== 第四步:验证配置 ==========
get-ciminstance win32_pagefilesetting | format-table name, initialsize, maximumsize -autosize
# ========== 第五步:重启生效 ==========
restart-computer -force创建文本文件,写入以下内容,保存为 .reg 文件,双击导入:
windows registry editor version 5.00 [hkey_local_machine\system\currentcontrolset\control\session manager\memory management] "pagingfiles"=hex(7):43,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,\ 6c,00,65,00,2e,00,73,00,79,00,73,00,20,00,31,00,36,00,33,00,38,00,34,00,\ 20,00,33,00,32,00,37,00,36,00,38,00,00,00,00,00
注意:注册表中的 pagingfiles 是 reg_multi_sz 类型,以十六进制表示。手动编写容易出错,建议优先使用 powershell 方式。
# 批量配置脚本 - 在多台机器上远程执行
$machines = @("pc-001", "pc-002", "pc-003", "pc-004", "pc-005")
foreach ($machine in $machines) {
write-host "正在配置 $machine ..." -foregroundcolor cyan
invoke-command -computername $machine -scriptblock {
# 关闭自动管理
$cs = get-ciminstance win32_computersystem
set-ciminstance -inputobject $cs -property @{automaticmanagedpagefile = $false}
# 清除旧配置
get-ciminstance win32_pagefilesetting | remove-ciminstance
# 创建新配置
new-ciminstance -classname win32_pagefilesetting -property @{
name = "c:\pagefile.sys"
initialsize = 16384
maximumsize = 32768
}
}
write-host "$machine 配置完成,等待重启生效。" -foregroundcolor green
}
write-host "全部配置完成。请安排时间统一重启。" -foregroundcolor yellow这是最常见的错误认知。
即使拥有 64gb 甚至 128gb 内存,也不应完全禁用页面文件。原因如下:
nonpaged pool 的溢出处理)假设页面文件存在。正确做法:即使 128gb 内存,也保留 8~16gb 的页面文件作为安全缓冲。
不正确。
完全不可行且无意义。
内存盘本身就是用物理内存模拟出来的虚拟磁盘。把页面文件放在内存盘上,等于"用物理内存来充当虚拟内存的后备存储",不仅没有增加任何可用空间,反而减少了实际可用的物理内存,适得其反。
强烈不推荐。
不是。
虚拟内存只是缓解手段,不是根本解决方案。如果系统长期处于内存高压状态(页面文件使用率持续 > 70%,硬缺页率持续 > 100 次/秒),说明物理内存确实不够用。此时应该:
不建议。
如果初始大小设得很小(如 1024mb),而最大值设得很大(如 32768mb),页面文件需要在运行时动态扩展。扩展过程需要分配连续的磁盘空间,如果磁盘碎片化严重或剩余空间不足,扩展可能失败,导致 oom。
建议:如果磁盘空间允许,将初始大小和最大值设为相同,一劳永逸。
绝对不能。
虚拟内存的访问速度比物理内存慢 数百倍到上千倍。依赖虚拟内存运行大型应用,体验会极其糟糕(频繁卡顿、硬盘灯常亮、响应延迟数秒)。虚拟内存的作用是"防止崩溃",而非"提供性能"。
不能。
readyboost 是 windows 提供的一种利用闪存设备(u 盘、sd 卡)作为额外缓存的技术。它的定位是辅助加速随机读取,而非替代页面文件。在拥有 4gb 以上内存和 ssd 的现代系统上,readyboost 几乎没有实际效果。它不能解决提交内存不足的问题。
配置虚拟内存是解决 oom 的核心手段,但配合以下优化措施,可以进一步减轻内存压力,减少对页面文件的依赖,获得更流畅的体验。
ctrl + shift + esc 打开任务管理器。每禁用一个启动项,通常可以节省 50~300mb 的后台内存占用。
win + r,输入 sysdm.cpl,回车。这可以节省约 200~500mb 的 gpu 和系统内存,对集成显卡的低配设备效果尤为明显。
按 win + r,输入 services.msc,回车。
可以安全禁用的服务(在确认不需要的前提下):
| 服务名称 | 说明 | 何时可禁用 |
|---|---|---|
| sysmain(原 superfetch) | 预加载常用程序到内存 | 使用 ssd 时通常可关闭 |
| print spooler | 打印服务 | 不使用打印机时 |
| fax | 传真服务 | 不使用传真时 |
| windows search | 文件索引服务 | 不依赖文件搜索时 |
| connected user experiences and telemetry | 遥测数据收集 | 注重隐私时 |
不熟悉的服务不要随意禁用。建议先查阅资料或搜索服务名称确认其功能后再操作。
现代浏览器(chrome、edge、firefox)是内存消耗大户。一个开了 30 个标签页的 chrome 可能占用 3~6gb 内存。
优化措施:
如果某个进程的内存占用持续增长且从不回落,大概率存在内存泄漏。
识别方法:
处理方法:
dotmemory(.net)或 valgrind / addresssanitizer(c/c++)进行排查。如果经过上述所有优化后仍然频繁 oom,说明当前工作负载确实超出了物理内存的承载能力。此时最彻底的方案是加装内存条。
购买前确认以下信息:
wmic memorychip get devicelocator, speed, capacity 命令)。如果你已经按照本文配置了虚拟内存,但仍然频繁遇到 oom,请按以下步骤逐一排查:
32 位应用程序的单个进程最大只能使用约 2gb 虚拟地址空间(启用 /largeaddressaware 后为 3gb,在 64 位系统上为 4gb)。
如果你运行的是 32 位程序,且该程序本身内存需求超过此限制,会表现为 oom,但这与系统虚拟内存配置无关。
判断方法:在任务管理器"详细信息"选项卡中,查看进程名称后面是否有 *32 标记。
解决方法:使用该软件的 64 位版本。如果软件没有 64 位版本,则无解,只能升级软件。
如果你运行的是 ai 训练、3d 渲染、视频编码等 gpu 密集型任务,报错中的"out of memory"可能指的是 gpu 显存(vram) 不足,而非系统内存不足。
判断方法:
解决方法:
如果系统运行一段时间后内存持续增长且不回落:
resmon),按"专用"内存列排序。svchost.exe、csrss.exe)内存异常,可能是驱动问题,尝试更新驱动。某些恶意软件会大量占用系统资源。运行一次完整的杀毒扫描:
某些 windows 更新包含内存管理相关的修复。确保系统已安装最新更新:
过时或有缺陷的驱动程序可能导致内存泄漏或异常占用。特别是:
建议从硬件厂商官网下载最新驱动,而非依赖 windows update 自动推送的通用驱动。
虚拟内存的配置界面和操作流程在 windows 10 和 windows 11 中完全一致。唯一的区别在于"设置"应用的入口布局略有不同(如 10.2 节所述),但最终到达的控制面板界面是相同的。
windows server 2016 / 2019 / 2022 / 2025 的虚拟内存配置方式与桌面版相同。但有以下额外注意事项:
| 对比项 | 虚拟内存(页面文件) | readyboost |
|---|---|---|
| 存储介质 | 内置硬盘(hdd/ssd) | u 盘、sd 卡 |
| 作用 | 扩展提交内存,防止 oom | 缓存随机读取,加速磁盘访问 |
| 是否增加可用内存 | 是(增加提交限制) | 否(仅作为读缓存) |
| 现代系统是否需要 | 是(核心机制) | 否(ssd 时代已无意义) |
windows 10/11 引入了内存压缩功能。当物理内存紧张时,系统会先将不活跃的页面进行压缩(而非直接写入磁盘),存储在物理内存的"压缩存储"区域中。只有当压缩存储也满了,才会写入页面文件。
linux 的 swap 分区/文件与 windows 的页面文件功能类似,但实现细节不同:
swappiness 参数(0~100)控制系统倾向于使用 swap 的程度。配置完虚拟内存后,建议持续监控系统内存状态,以便及时发现问题:
日常使用中,偶尔打开任务管理器查看内存使用情况,关注:
在性能监视器中,可以设置"警报":
perfmon。paging file\% usage。页面文件所在分区需要保持充足的空间。建议:
如果页面文件放在 ssd 上,频繁的写入会消耗 ssd 的写入寿命(tbw)。建议:
在域环境中,管理员可以通过组策略统一下发虚拟内存配置:
gpmc.msc)。建议企业制定统一的虚拟内存配置标准:
| 设备类型 | 物理内存 | 页面文件配置 |
|---|---|---|
| 办公桌面 | 8~16 gb | 初始 16384,最大 16384 |
| 开发工作站 | 32~64 gb | 初始 32768,最大 32768 |
| 设计工作站 | 64~128 gb | 初始 32768,最大 65536 |
| 服务器(应用) | 64~256 gb | 系统管理 或 初始 16384,最大 16384 |
| 服务器(数据库) | 128~512 gb | 初始 16384,最大 32768 |
在企业环境中,建议使用以下工具进行集中监控:
监控指标应包括:available mbytes、committed bytes、% committed bytes in use、paging file % usage、hard faults/sec。
win + r,输入 sysdm.cpl,回车。虚拟内存是 windows 操作系统中一个看似简单却极为关键的机制。它既是系统稳定运行的安全网,也是我们在物理内存有限时最直接的"扩容"手段。正确配置虚拟内存,不能从根本上消除内存瓶颈,但它能有效避免程序崩溃、系统卡死等严重影响工作效率的问题。
以上就是从原理到实操详解windows虚拟内存配置完全指南的详细内容,更多关于windows虚拟内存配置的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论