我不明白为什么 RAM 内存越多,交换文件就越大。难道不应该反过来吗?我的印象是,当 RAM 内存不足以满足系统和应用程序的需求时,就会使用 HDD 空间。
答案1
你的理解是正确的。交换文件大小(或分页文件)只是默认设置。Windows 默认该比例约为 1
答案2
首先,对于某些睡眠和休眠状态(取决于操作系统),您需要将进程内存缓存到磁盘,因此交换的大小必须大于或等于它将缓存的内存的大小,以防您已经满了。
但更根本的是,Windows 虚拟内存系统在进程加载时在 RAM 和虚拟内存中为进程的内存保留私有空间,即使进程永远不会使用页面文件中的任何保留空间。请注意,此空间是保留的,而不是分配的。还请注意,进程在进行保留时可以指定它实际上可能不会使用的私有内存量。
以下是 MSDN 博客中有关页面文件中的内存使用情况的一段引文:
为什么操作系统可能/会在交换文件中分配空间来保存从未驻留且可能永远不会驻留的内存内容?答案其实并不复杂:Windows 不能仅仅因为您尝试写入静态变量等就发出“内存不足”异常/错误。交换空间必须在合理的时间(例如加载 DLL)预先分配,以便我们可以在合理的时间(虚拟地址从保留变为提交的时间)发出错误结果。 来源
例如,在 Process Explorer 中,进程内存使用量的 Private Bytes 指标指的是为该进程保留的页面文件量,即使该进程完全分页到磁盘,它也足以存储进程内存。Working Set 指标显示程序正在使用的物理内存量(以及该进程可能正在使用的任何共享对象)。
请参阅此处了解更多信息:
答案3
确实如此。RAM 和交换空间构成了整个虚拟内存。操作系统倾向于充分利用 RAM,因为它速度更快。当 RAM 用完时,系统会将未使用的内存页面写入页面文件。
自从虚拟内存出现以来,就一直存在关于磁盘上应保留的交换空间量的公式,通常是 RAM 大小的 1 倍到 2 倍。虽然以前确实如此,但现在拥有 16G 内存的台式机不需要任何除非您开始进行严肃的视频编辑或其他内存密集型应用程序,否则无需使用交换空间。但是,Windows 仍然使用基于 RAM 和可用磁盘空间的公式来计算交换空间。
确定交换空间大小的最佳方法是检查最大内存使用量时使用的虚拟内存量。然后增加 1 或 2G。如前所述,我想不出有多少种情况需要 16G RAM 的台式机需要交换空间,即使是 8G 的机器,我也非常怀疑是否需要交换空间。