我最近买了一块新显卡,希望能够提高游戏性能。虽然性能确实大幅提升,但我仍然受困于图形卡顿(帧更新间歇性长时间暂停),这让我非常沮丧。
沮丧之余,我像一个真正的专业人士一样处理这个问题——我观看了Youtube 视频并下载了一些随机程序我被指示这样做。该程序的目的似乎是清除 Windows 10 内存缓存 -(在我的情况下,将其从 16GB 降至约 300MB)。
我认为这不可能奏效——当然,繁重的图形工作是在我的专用卡上完成的,大型纹理将存储在 VRAM 中。更不用说,我还有 20GB 以上的可用内存,所以我认为不存在空间/分页问题。
令我惊讶的是,程序居然能运行。我的游戏运行得非常流畅,帧率也非常理想,没有任何卡顿或卡顿。
谁能解释一下为什么清除我的内存缓存(至少我希望随机程序没有做太多其他事情)可以解决我的游戏性能问题?
运行程序之前:
运行程序后:
没有游戏运行(但之前使用程序清理的内存:
游戏运行:
答案1
在 Microsoft 文章中可以找到有关待机内存的非常好的解释
我所有的物理 RAM 都到哪里去了?。
简而言之,这基本上是 Windows 缓存,其中保存了进程使用的磁盘块的副本,这样如果重新启动这些进程,就可以快速找到所需的块而无需执行磁盘读取。
这些块不是问题,因为当程序需要的内存多于可用内存时,它们会被立即释放。
游戏的陷阱是,如果游戏想要分配尽可能多的内存,以便在内存中保存尽可能多的数据,它会询问 Windows 有多少内存可用。Windows 将返回可用的内存量,但不包括待机内存。
然后游戏将分配比它本来可以请求的更少的内存。如果它本来请求的内存比报告的数量多,那么它将毫无障碍地从备用内存中分配。问题是游戏不知道它实际上可以请求多少。
程序 Empty Standby List 所做的工作非常简单:它请求所有内存,不读取任何内容,然后释放它。这样,备用内存实际上就被清除了,所有内存现在都被标记为空闲并可用于游戏。