C 盘里的 hiberfil.sys 和 pagefile.sys 能缩小吗?
在资源管理器里显示隐藏文件,再取消勾选“隐藏受保护的操作系统文件”,C 盘根目录会多出两个不小的文件,hiberfil.sys 和 pagefile.sys,内存越大它们通常越大,按默认比例,32 GB 内存的电脑上单是休眠文件就有大约 12.8 GB。它们都在被系统使用,右键删不掉,网上常见的做法是直接关掉休眠,或者把虚拟内存设成无分页文件,空间确实能回来,但先要知道这样会丢掉什么。
hiberfil.sys 里存的是什么
hiberfil.sys 是休眠文件,选择休眠时,Windows 把内存里的状态写进去再断电,下次开机读回来,打开的软件还在原处。很多从不用休眠的电脑上它也在,因为快速启动要用到它,开着快速启动时,关机会先注销你的会话,再把系统内核的状态写进这个文件,下次冷启动从这里读,比从头启动快。
微软的系统电源状态说明把休眠文件分成两种,完整类型默认约为内存的 40%,支持休眠、混合睡眠和快速启动,缩减类型约为内存的 20%,只支持快速启动。
关掉休眠和改成缩减类型,差在哪里
以管理员身份运行 powercfg /h off 会删掉 hiberfil.sys,休眠、混合睡眠和快速启动会一起停用,微软的说明还提醒,混合睡眠不能用以后,睡眠中途断电可能丢掉没保存的内容。
如果你只想留下快速启动,平时也不用休眠,可以把类型改成缩减:
powercfg /h /type reduced
按 40% 和 20% 的比例算,32 GB 内存的电脑上,休眠文件大约从 12.8 GB 变成 6.4 GB,能收回 6 GB 左右。代价是电源菜单里不再有休眠,笔记本合盖放着不充电时,也不会再转进休眠保存现场。以前用 /size 指定过大小的,powercfg 的说明要求先运行 powercfg /h /size 0 交回系统管理,再改类型。以后又要用休眠,运行下面这条就能恢复:
powercfg /h /type full
pagefile.sys 不要整个关掉
pagefile.sys 是分页文件,内存紧张时,Windows 把不常用、而且改动过的内存页写到这里,系统崩溃时生成转储文件也要靠它,微软的分页文件说明写得很直接,既没有分页文件也没有专用转储文件时,崩溃转储就生成不出来。关掉分页文件以后,系统能承诺给程序的内存上限会降到比物理内存还少一点,内存再大,程序申请得多了也一样会失败。
默认的系统管理大小会按内存、崩溃转储设置和实际用量自动增减,上限是内存的 3 倍和 4 GB 里较大的那个,同时不超过所在磁盘的八分之一,所以 C 盘上看到一个很大的 pagefile.sys,多半是某段时间用量高把它撑大了。
把分页文件移到另一块盘
电脑里有第二块内置硬盘时,可以把分页文件放过去:
- 按
Win + R,输入sysdm.cpl打开系统属性。 - 在“高级”页的“性能”一栏点“设置”,再切到“高级”页,点“虚拟内存”下的“更改”。
- 取消勾选“自动管理所有驱动器的分页文件大小”。
- 选中 D 盘,选“系统管理的大小”,点“设置”。
- 选中 C 盘,看情况选“无分页文件”或设一个较小的大小,点“设置”,确定后按提示重启。
C 盘完全不留分页文件之前,先想好崩溃转储,确认另一块盘上的分页文件足够大,或者按微软的方法设一个专用转储文件,不然下次蓝屏可能拿不到转储,排查时就少了最重要的一份线索。外接硬盘、随时可能拔掉的盘,都不适合放分页文件。
| 文件 | 用途 | 想收回空间时 | 要留意的 |
|---|---|---|---|
hiberfil.sys |
休眠、混合睡眠与快速启动 | powercfg /h /type reduced |
缩减后不能再休眠 |
pagefile.sys |
分页与崩溃转储 | 移到另一块内置硬盘 | 不要所有盘都设成无分页文件 |
改完以后怎么核对
重启一次再看 C 盘根目录,hiberfil.sys 应该变小了,搬走的 pagefile.sys 也不在 C 盘了,可以在设置的存储页里看可用空间的变化。之后照常用几天,开机、合盖和平时用的大软件是否正常,比当场看到的空间数字更能说明问题。还想继续找大文件,可以接着看 C 盘大文件查找 和 Windows 内存占用。