【发布时间】:2015-03-22 22:28:26
【问题描述】:
我不确定这是否是一个正确的问题,但有没有办法“强制”应用程序使用物理内存而不是页面文件?
更准确地说:我编写了一个应用程序 (C++) 来分析一些测量数据。因此,它需要分配一个相当大的数组,使进程使用大约 12 GB 的 RAM。我确实安装了 16 GB,所以这应该不是太大的问题。我启动了程序,它填满了我的 RAM(直到剩下大约 1GB)。我确实继续使用我的笔记本电脑一段时间,然后让它运行一夜。 早上看我的程序,它只完成了大约 25%,而在那之后它实际上应该超过 80%。查看任务管理器,我可以看到,它只使用了大约 1.8 GB 的 RAM,而不是之前使用的 12 GB。所谓的“提交”是用 23 / 31.9 GB 填充的。
所以,我的物理内存似乎几乎是空的(有超过 12 GB 可用)并且程序继续运行非常缓慢。如果这甚至是它运行缓慢的原因:有没有办法强制它使用物理内存? 此外,.exe 在任务管理器中显示为“后台服务”。启动新实例时,它显示为应用程序。这会导致内存限制吗?
编辑:在 Windows 8.1 x64 上运行。
【问题讨论】:
-
它通常取决于操作系统。您应该添加一个特定于操作系统的标签。
-
蛮力的方法是减少系统设置中的虚拟内存......并希望“其余部分”仍然正常工作:-)
-
如果程序实际上并未访问相关页面,就会发生这种情况。除非您看到很多寻呼活动,否则我认为您是在找错树。
-
您需要分配非分页内存。看这里:stackoverflow.com/questions/17892358/…
-
您还应该检查电源管理设置; Windows 可能已决定通过降低 CPU 速度来节省电量。
标签: c++ memory memory-management windows-8.1