我正在调试我的 PC 在空闲后随机冻结的问题。有一次我禁用了我的页面文件,但注意到由于这个原因我没有得到崩溃转储。我正在运行 SSD,所以我不想把所有 32gb 的内存都放到页面文件中,所以我将系统配置如下:
但是,重新启动后,我看到一个很大的 pagefile.sys,当我返回虚拟内存配置选项时,它被设置为“自动管理所有驱动器的分页文件大小”
我还没有弄清楚崩溃问题,所以我不确定它是否相关。但是,我认为 Windows 在没有询问我的情况下按自己的意愿配置页面文件很奇怪。我也没有看到任何内存转储或崩溃日志(只有我手动关闭电源时的电源事件),这似乎可能相关。
Windows 7 64 位(Microsoft Windows [版本 6.1.7601])
更新可能有用的信息:
- 这似乎与崩溃无关,几个月前我已经通过 BIOS 固件升级解决了这个问题。
- 我在用ASROCK Extreme Tuning 实用程序和极速内存功能。虽然整个过程中都存在将页面文件存储在 RAM 磁盘中的选项(我不确定为什么存在这个选项),但在此配置中我已关闭内存页面文件。Windows 仍应控制页面文件和任何设置。我想不出任何其他可能影响此情况的程序。
答案1
Windows 可能没有删除旧的 pagefile.sys。请尝试:
- 设置为“无分页文件”
- 重启
- 删除 C:\pagefile.sys(隐藏文件,可能需要管理权限)
- 重置为“自定义尺寸”
- 重启
如果页面文件的设置被某个程序重置,您可以尝试使用进程监控对所有注册表更改进行启动时记录,以便识别更改注册表的程序。请记住,这会大大减慢启动过程。
页面文件设置位于注册表中
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\
。所涉及的值可能是PagingFiles
,但您可以通过在系统管理和自定义之间更改虚拟内存设置并刷新注册表中的显示来查看更改的内容,从而轻松检查哪一个。
利用这些信息,您可以在进程监视器中设置过滤器并识别在注册表中更改该值的进程。
页面文件主要用于在 RAM 已满时换出程序。它用于转储只是偶然的 - 是 Windows 放置崩溃数据的方便位置。因此,它的大小至少应与您的 RAM 一样大。您应该验证当指定的分配太小时 Windows 是否不会分配更大的文件,在我看来,这是 Windows 采用的合理内置保护措施。
备注:如果您除了 SSD 之外还有另一个驱动器,您可以将页面文件移动在那里,以免减少太多。
另外需要注意的是:现代 SSD 的额定容量为每天几 GB,最长可使用十年,因此您不必担心 32 MB 会缩短磁盘的使用寿命。除非 SSD 较旧或质量较差,否则 SSD 寿命不再是问题。
例如,AnandTech 的一项测试得出了下列结果:
例如,如果每天的写入量仅为 5 GB,则上述使用寿命应乘以两倍。现代 SSD 的使用寿命应与计算机的使用寿命相同。
答案2
要在 Windows 中使用全内存转储,页面文件的大小必须与总 RAM 大小相同或更大。就您而言,这意味着它必须至少为 32GB。
但是,您可以使用小得多的“小型转储”。
尝试这个:
将页面文件设置改回“无页面文件”并重新启动,以便 Windows 删除 pagefile.sys。
注意:重新启动后,请仔细检查 pagefile.sys 是否确实被删除。为此,请使用 Windows 资源管理器浏览系统驱动器(通常是 C:)并查找 pagefile.sys。您可能需要转到
Tools > Folder Options > View > 'Show hidden files, folders, and drives' > Apply
才能显示它(如果它在那里)。如果 pagefile.sys 仍在那里,请将其删除。使用此页面底部的说明启用小内存转储:关联
将系统驱动器(通常为 C:)的初始和最大页面文件大小设置为虚拟内存设置窗口底部列出的“允许的最小值”(您的第一个屏幕截图未显示最底部,但那是我所指的窗口)。它应该非常小;例如,我的是 16MB。
保存新的虚拟内存设置并重新启动。
答案3
您是否检查过 ReadyBoost 是否已关闭?
尽管 Windows 不应该将系统驱动器 (C:) 用于 ReadyBoost,但如果打开它,Windows 将使用驱动器上的整个可用空间来存储页面文件。
这可能不是答案,但值得检查。
http://windows.microsoft.com/en-gb/windows7/turn-readyboost-on-or-off-for-a-storage-device
答案4
检查此链接
我发现“Controlset001”和“Controlset002”的设置不同,从而导致冲突。删除 Controlset002 并移除 001 后,留下“ControlSet”,没有其他问题。但那只是我的问题。花点时间仔细检查一下,并确保你有一个备份可以恢复,以防万一出现问题。