页面文件与虚拟内存是什么
Windows 用页面文件(pagefile.sys)扩展可用内存:当物理内存吃紧,或程序一次性申请大块内存时,系统把暂时不用的页面换到磁盘上,为程序提供连续的“提交内存”。应用报“内存不足”时,真正触顶的往往是提交上限,也就是物理内存加页面文件大小之和,而不只是物理内存。
基本信息
| 适用平台 | Windows 客户端与服务器全版本 |
|---|---|
| 查询命令 | Get-CimInstance Win32_PageFileUsage;Get-CimInstance Win32_OperatingSystem |
| 图形入口 | 系统属性 → 高级 → 性能设置 → 高级 → 虚拟内存 |
| 关键关系 | 提交上限 = 物理内存 + 页面文件大小 |
| 默认策略 | 系统托管大小,按物理内存与使用情况自动调整 |
典型使用场景
- 应用报内存不足但物理内存还有余量:核对提交上限与当前提交量
- 排查内存泄漏:观察提交量随时间持续上升而非波动
- 服务器调优:在物理内存较大的服务器上评估系统托管与固定大小的取舍
- 启动失败排查:部分应用启动时一次性提交大块内存,上限不足会直接失败
- 容量规划:按业务峰值提交量决定物理内存与页面文件的组合
常用示例
常用示例
# 页面文件配置与当前使用量
Get-CimInstance Win32_PageFileUsage | Select-Object Name, AllocatedBaseSize, CurrentUsage, PeakUsage
# 系统层面的虚拟内存与提交量
Get-CimInstance Win32_OperatingSystem |
Select-Object TotalVirtualMemorySize, FreeVirtualMemory, TotalVisibleMemorySize, FreePhysicalMemory
# 查看是否由系统自动管理
Get-CimInstance Win32_ComputerSystem | Select-Object AutomaticManagedPagefile
# 当前提交量(Performance 计数器,单位字节)
(Get-Counter '\Memory\Committed Bytes').CounterSamples.CookedValue
# 提交上限
(Get-Counter '\Memory\Commit Limit').CounterSamples.CookedValue关键指标读法
| 指标 | 含义 | 异常参考 |
|---|---|---|
| AllocatedBaseSize | 页面文件已分配大小(MB) | 为 0 表示未配置 |
| CurrentUsage | 当前使用量(MB) | 长期接近上限说明内存紧张 |
| PeakUsage | 历史峰值使用量 | 用于评估是否需要调大 |
| Commit Limit | 提交上限(物理内存+页面文件) | 应用报内存不足时先看它 |
| Committed Bytes | 当前已提交字节数 | 持续接近上限即为真实瓶颈 |
把页面文件设为 0 或完全禁用,会让某些应用在启动或处理大文件时直接崩溃,也会让系统在内存紧张时缺少缓冲。服务器上不建议禁用,保留系统托管或设置合理固定值更稳妥。
固态盘上存在页面文件是正常设计,不必为了让“写入寿命”好看而关闭它。真正需要关注的是页换页频率(Pages/sec 类指标),频繁换页才是性能问题的信号。
调整页面文件大小需要重启才完全生效,且会短时间影响内存敏感型应用。生产服务器上做这项变更要走变更窗口,并提前记录当前提交量作为对比基线。