我是否可以阻止Windows过度回收物理内存?

时间:2015-04-09 21:01:33

标签: windows memory

我正在编写一个服务器应用程序,我希望尽可能有效地使用机器的所有可用物理RAM。计划是它将使用AWE分配物理页面,直到它检测到99%的物理内存并在1%空闲时停止,并且任何时候物理内存降至1%以下,它将释放它不需要的物理页面。

然而,当我将这个计划付诸实践时,Windows似乎认为任何时候它都有99%的RAM在使用它是一个好主意,释放更多的物理内存,所以它开始将各种东西分页到磁盘,我的系统崩溃了。

我如何告诉Windows可以使用99%的RAM并且它不需要尝试将内容重新打印到磁盘,直到它达到其默认的理想使用级别(我猜它会是90%......)

注意:Raymond说'除非你设计的系统是你在计算机上运行的唯一程序,否则这是一个坏主意。'

在此服务器方案中,此 基本上是计算机上运行的唯一应用程序。但不幸的是,有些操作系统/后台任务需要运行......

但我当然不希望计算机上有任何其他进程沉迷于“使用除1%RAM以外的所有内容”行为......?

更新:我做了更多的实验,并开始怀疑我是否有点提出错误的问题。我认为窗户过于紧张可能是错误的。也许问题应该是“如何确定我的流程可以安全使用多少物理RAM,而不会影响机器的整体响应能力”?

1 个答案:

答案 0 :(得分:2)

你不能。 Windows内存管理器的运行级别低于您的程序,并且对您的程序一无所知(即使它确实如此,也没有理由认为您的程序是您声称的好公民。如果您的程序崩溃,或者在malloc s循环中有一个一个一个错误?在你的运行时需要内存的其他程序呢?那些编写Windows MM的人在编写时遇到的其他几千个场景怎么样?吗?)

不要试图比Windows更聪明。更有效地利用您的时间将考虑您的应用程序是否真的需要预先分配99%的物理内存。