如果我们减小 hiberfil.sys 的大小会发生什么

20 memory windows-7 hibernate ramdisk

我今天发现我们可以使用powercfg -H -size 100%命令行工具设置 hiberfil.sys 的大小。忽略您将获得的硬空间,如果我们将其设置为 ,还有什么会改变powercfg -H -size 50%?它是否将最大 RAM 使用率限制为 50%?如果我的 RAM 超过 50%,系统会不会休眠?

Mok*_*bai 22

找到了有关休眠文件的 Microsoft 文档。它告诉我们的是,内存的内容在转储到休眠文件之前会被压缩,因此在大多数情况下,设置较低的休眠文件百分比大小是有益的,因为浪费的磁盘空间更少。

Windows 通过将内存内容复制到磁盘来支持休眠。系统在将内存内容保留在磁盘上之前先对其进行压缩,从而将所需的磁盘空间减少到小于系统上的物理内存总量。

该命令的正确语法似乎是:

PowerCfg.exe /HIBERNATE /SIZE 75
Run Code Online (Sandbox Code Playgroud)

该文档还指出,如果休眠文件太小,则会出现“停止错误”,代码将建议您将休眠文件大小增加多少。

这样做不会限制系统可用的物理 RAM 量。

因为它是压缩的,所以如果您很少使用物理内存的 100% 和/或您的内存可能包含合理可压缩的数据,那么减小文件的大小不会有问题,而大多数情况下应该是这样。

从该文件:

Windows 在名为 Hiberfil.sys 的休眠文件中为休眠保留了磁盘空间。对于 Windows 7,休眠文件的默认大小等于系统上总物理内存的 75%。例如,在具有 2 GB RAM 的计算机上,默认的休眠文件大小为 1.5 GB。

在内存使用的罕见和极端情况下,包括内存性能或测试实用程序的内存验证,休眠可能会失败,因为内存的内容无法压缩到足以适应休眠文件的大小。

我会尝试使用较低的数字,但我个人不会低至 50%。不过这可能很好,最糟糕的情况是休眠将失败,您必须正常重启并将大小设置为大一点。

  • 谢谢你的回答。我不知道官方的,但 `powercfg -H -size 100%` 和 `PowerCfg.exe /HIBERNATE /SIZE 75` 都可以正常工作 (2认同)
  • @intrepidis:我完全意识到这一点。您是否知道,如果您只使用“powercfg /?”,您将看到更长的_所有_可能参数列表。如果您仔细查看它们,您最终会(它们不按字母顺序排列)看到“-HIBERNATE, -H”的条目,并且除了“-H <ON|OFF>”之外,它还接受“ -H -Size <PercentSize>` 其中 `-Size 指定所需的 hiberfile 大小占总内存的百分比。默认大小不能小于 50。此开关还将自动启用 hiberfile。` — 这与链接的 MS 文档相匹配。 (2认同)

小智 8

Windows 10 中的语法略有不同

PowerCfg /h[ibernate] off
Run Code Online (Sandbox Code Playgroud)

将关闭休眠并删除文件 C:\hiberfil.sys

PowerCfg /h[ibernate] on
Run Code Online (Sandbox Code Playgroud)

将重新打开该功能并创建与可用内存大小大致相同的文件 C:\hiberfil.sys(16GiB RAM 系统创建一个 15.9GiB 大小的 hiberfil.sys)

PowerCfg /h[ibrnate] size 75
Run Code Online (Sandbox Code Playgroud)

将创建一个 hiberfil.sys 文件或将其大小减小到大约 75% (12GiB)

PowerCfg /h size 100
Run Code Online (Sandbox Code Playgroud)

与打开该功能的效果相同

大小值大于 100 会导致参数错误消息,小于 40 的大小将有效大小设置为 40%。