谁吃掉了我的空间?休眠模式 (hiberfil.sys)以及虚拟内存(Pagefile.Sys)

每次重装电脑总会遇到各式各样的问题,这次重装完NUC系统后,还没装啥软件呢,我就发现C盘空间占掉了快一半,我记得以前Windows体积没这么夸张啊?

image.png
(图源 :pixabay)

查看一下C盘属性,发现C盘占据了约67G空间:

Reveal spoiler

image.png

看了一下C盘根目录下文件的属性,发现所有文件夹一共占据了约28G空间:

Reveal spoiler

image.png

这样一计算,丢了足足39G空间,这可不是一个小数目啊?是谁吃掉了我的39G空间呢?

找到罪魁祸首

在C盘根目录下,文件管理器中查看(view)选项中挑选显示隐藏文件(Hidden Items)后,发现根目录下多出来$WinREAgent以及ProgramData两个隐藏目录,但是查看一下,不过占了几百M空间,显然不是罪魁祸首。

在文件管理器的Options中(View->Options->View)中挑掉Hide protected operating system files (recommended)

Reveal spoiler

image.png

挑掉后会弹出提示(选Yes就好):

Reveal spoiler

image.png

选择Apply后,回到C盘根目录下,你会发现多了好几个隐藏文件:

Reveal spoiler

image.png

尤其是hiberfil.sys以及pagefile.sys竟然分别占据26.6G以及9.9G空间,这简直是罪不可赦!下面我们分别来把他们消灭掉。

关闭休眠

说到hiberfil.sys,就要提到Windows关机的几种模式,最常用的关机(Shut down)以及重启(Restart)应该不用多说了。

另外,常用的还有一种睡眠(Sleep)模式,这种模式会关闭除内存外的所有设备,所以电脑会有极低的消耗,当唤醒时瞬间恢复满血工作状态(睡眠时啥样,醒来后还是啥样)。

除此之外,还有一种休眠(Hibernate)模式,如果选择这种模式,那么系统会将内存中所有的数据,转存到硬盘,然后关闭所有的设备。当启动时,系统会将硬盘里的数据恢复到内存,然后进入满血的工作状态。

乍一看,貌似休眠模式更多优点,比如说完全不耗电,又比如说不怕中途断电。可是缺点也是明显的,要增加一个内存转储到硬盘以及从硬盘读出数据到内存的过程。占据磁盘空间不说,SSD总这么几十G几十G的写入,心疼呀。

所以我觉得在台式机系统,最好完全禁用休眠(Hibernate)!禁用休眠的步骤如下:

在开始菜单附近的搜索框中敲入cmd,再弹出的结果命令行提示符(command Prompt)程序上右键选择以管理员身份运行(Run as administrator):

Reveal spoiler

image.png

输入如下指令并回车:

powercfg -h off

再回到C盘根目录,你会惊奇地发现hiberfil.sys文件不见啦,一下子多出来26.6G空间。(具体hiberfil.sys空间占用大小和安装的内存有关,内存越大hiberfil.sys文件越大)。

当然了,如果你有特殊的需求(我并不认为会有这样需求),那么也可以用同样的步骤开启休眠(Hibernate)功能:

powercfg -h on

关闭虚拟内存

关于虚拟内存,相比大家都会知道一点点,说白了就是内存不够大,然后在磁盘上分配一块空间,必要的时候当作内存使用,这样内存就变大了。

不过,现在的问题是,我的内存已经足够大了(64G),我暂时想象不出来有啥程序能吃掉这么多内存。(我大台机是128G内存的哦)

所以我决定把Windows的虚拟内存彻底关闭掉,关闭方法如下:

Setting->About右侧选择Advanced System Setting,进入到如下页面:

Reveal spoiler

image.png

选择Setting->Advanced:

Reveal spoiler

image.png

在虚拟内存(Virtual Memory)栏目下,我们可以看到,现在虚拟内存占用了9728M空间,又是一个吃空间大户啊。

选择Change...,我们发现现在是Windows自己管理呢:

Reveal spoiler

image.png

挑选掉Automatically manage paging file size for all drives:

Reveal spoiler

image.png

现在我们就能自己管理虚拟内存啦,然后把C盘也设置为No paging file,这会导致一个警告⚠:

Reveal spoiler

image.png

大意是禁用或者设置小于800M的页面文件,当发生系统错误时,Windows可能没法记录有助于发现问题的细节信息。哎,等有问题再说吧,其实就算记录,我也看不懂啊。

不过不同于关闭休眠,我们完成虚拟内存的设置后,重启以后pagefile.sys才会被删除,不过这都无所谓啦。

结论

Windows的休眠机制以及虚拟内存机制,导致生成两个超大的文件(hiberfil.sys & Pagefile.Sys),根据我电脑的实际情况以及个人偏好,我选择关闭了休眠功能以及关闭了虚拟内存,进而找回来近40G的磁盘空间。

小伙伴们可以根据自己的情况进行设置,不过事先声明,以上内容仅供参考,如果你把自己的电脑搞冒烟了,我可不负责哦。

Sort:  

我也去警用一下休眠,感谢欧哥分享

发现内存不够,我都不敢删除,万一删除了系统文件,就完蛋了。。曾经记忆深刻。😂

这可是个好帖子,很实用。
每次我都不知道内存哪去了。找不到病根呢。
太厉害了。

😪对于我们这种小白清理内存太难了