![如何才能最大化单个 Windows 进程的内存使用率?](https://linux22.com/image/664408/%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E6%9C%80%E5%A4%A7%E5%8C%96%E5%8D%95%E4%B8%AA%20Windows%20%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E7%8E%87%EF%BC%9F.png)
我的系统内存很大。现在,为了防止单个应用程序分页,我已经完全禁用了分页文件。我遇到的问题是,我无法最大化我关心的单个进程的内存使用率。我想禁用单个进程的分页,以便它永远不会分页,并且它可以使用大部分(95%?)内存;所有其他进程都应该能够分页。现在,我们最终使用禁用分页文件的可用内存的约 80%,但我们知道我们不关心那些被发送到分页文件的进程。我运行的不是开源程序,所以我无法修改代码以使用其他 .NET/Windows 调用来自己防止分页。
我认为在 Linux 上这被称为“swappiness”。
答案1
您无法告诉操作系统将进程数据保存在内存中;如果进程具有“锁定内存页面”权限,它可以自行执行此操作,但必须在代码中明确请求;否则,Windows 将根据其认为合适的方式进行页面调出。
如果完全禁用页面文件,Windows 将只为其自身保留一些内存,并且在已使用过多内存时将开始拒绝内存分配请求。
如果您保持页面文件处于启用状态(您确实应该这样做),那么您完全无法控制分页的内容和时间。
无论如何,您应该更信任内存管理器:它的工作是将未使用/不需要的数据调出页面,如果某个进程正在主动访问其内存,则它被调出页面的机会很小。当然,除非内存使用率太高,系统无法应付;但如果是这种情况,那么您确实应该考虑为该设备添加更多内存。