# C 盘里的 hiberfil.sys 和 pagefile.sys 能缩小吗？

在资源管理器里显示隐藏文件，再取消勾选“隐藏受保护的操作系统文件”，C 盘根目录会多出两个不小的文件，`hiberfil.sys` 和 `pagefile.sys`，内存越大它们通常越大，按默认比例，32 GB 内存的电脑上单是休眠文件就有大约 12.8 GB。它们都在被系统使用，右键删不掉，网上常见的做法是直接关掉休眠，或者把虚拟内存设成无分页文件，空间确实能回来，但先要知道这样会丢掉什么。

## hiberfil.sys 里存的是什么

`hiberfil.sys` 是休眠文件，选择休眠时，Windows 把内存里的状态写进去再断电，下次开机读回来，打开的软件还在原处。很多从不用休眠的电脑上它也在，因为快速启动要用到它，开着快速启动时，关机会先注销你的会话，再把系统内核的状态写进这个文件，下次冷启动从这里读，比从头启动快。

微软的[系统电源状态说明](https://learn.microsoft.com/en-us/windows/win32/power/system-power-states)把休眠文件分成两种，完整类型默认约为内存的 40%，支持休眠、混合睡眠和快速启动，缩减类型约为内存的 20%，只支持快速启动。

## 关掉休眠和改成缩减类型，差在哪里

以管理员身份运行 `powercfg /h off` 会删掉 `hiberfil.sys`，休眠、混合睡眠和快速启动会一起停用，[微软的说明](https://learn.microsoft.com/en-us/troubleshoot/windows-client/setup-upgrade-and-drivers/disable-and-re-enable-hibernation)还提醒，混合睡眠不能用以后，睡眠中途断电可能丢掉没保存的内容。

如果你只想留下快速启动，平时也不用休眠，可以把类型改成缩减：

```cmd
powercfg /h /type reduced
```

按 40% 和 20% 的比例算，32 GB 内存的电脑上，休眠文件大约从 12.8 GB 变成 6.4 GB，能收回 6 GB 左右。代价是电源菜单里不再有休眠，笔记本合盖放着不充电时，也不会再转进休眠保存现场。以前用 `/size` 指定过大小的，[powercfg 的说明](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options)要求先运行 `powercfg /h /size 0` 交回系统管理，再改类型。以后又要用休眠，运行下面这条就能恢复：

```cmd
powercfg /h /type full
```

## pagefile.sys 不要整个关掉

`pagefile.sys` 是分页文件，内存紧张时，Windows 把不常用、而且改动过的内存页写到这里，系统崩溃时生成转储文件也要靠它，[微软的分页文件说明](https://learn.microsoft.com/en-us/troubleshoot/windows-client/performance/how-to-determine-the-appropriate-page-file-size-for-64-bit-versions-of-windows)写得很直接，既没有分页文件也没有专用转储文件时，崩溃转储就生成不出来。关掉分页文件以后，系统能承诺给程序的内存上限会降到比物理内存还少一点，内存再大，程序申请得多了也一样会失败。

默认的系统管理大小会按内存、崩溃转储设置和实际用量自动增减，上限是内存的 3 倍和 4 GB 里较大的那个，同时不超过所在磁盘的八分之一，所以 C 盘上看到一个很大的 `pagefile.sys`，多半是某段时间用量高把它撑大了。

## 把分页文件移到另一块盘

电脑里有第二块内置硬盘时，可以把分页文件放过去：

1. 按 `Win + R`，输入 `sysdm.cpl` 打开系统属性。
2. 在“高级”页的“性能”一栏点“设置”，再切到“高级”页，点“虚拟内存”下的“更改”。
3. 取消勾选“自动管理所有驱动器的分页文件大小”。
4. 选中 D 盘，选“系统管理的大小”，点“设置”。
5. 选中 C 盘，看情况选“无分页文件”或设一个较小的大小，点“设置”，确定后按提示重启。

C 盘完全不留分页文件之前，先想好崩溃转储，确认另一块盘上的分页文件足够大，或者按微软的方法设一个专用转储文件，不然下次蓝屏可能拿不到转储，排查时就少了最重要的一份线索。外接硬盘、随时可能拔掉的盘，都不适合放分页文件。

| 文件 | 用途 | 想收回空间时 | 要留意的 |
| --- | --- | --- | --- |
| `hiberfil.sys` | 休眠、混合睡眠与快速启动 | `powercfg /h /type reduced` | 缩减后不能再休眠 |
| `pagefile.sys` | 分页与崩溃转储 | 移到另一块内置硬盘 | 不要所有盘都设成无分页文件 |

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-hiberfil-pagefile-c-drive-windows-zh-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-hiberfil-pagefile-c-drive-windows-zh.webp" width="1360" height="454" loading="lazy" alt="两种休眠文件与分页文件的用途">
  </picture>
  <figcaption>完整休眠文件支持休眠与快速启动，缩减类型只留快速启动，分页文件同时承担换页和崩溃转储。</figcaption>
</figure>

## 改完以后怎么核对

重启一次再看 C 盘根目录，`hiberfil.sys` 应该变小了，搬走的 `pagefile.sys` 也不在 C 盘了，可以在设置的存储页里看可用空间的变化。之后照常用几天，开机、合盖和平时用的大软件是否正常，比当场看到的空间数字更能说明问题。还想继续找大文件，可以接着看 [C 盘大文件查找](/zh/windows/blog/find-large-files-on-windows) 和 [Windows 内存占用](/zh/windows/blog/windows-high-memory-usage)。


Canonical: https://mole.fit/zh/windows/blog/hiberfil-pagefile-c-drive-windows
