短期高VM内存使用的影响(Windows)

在我正在写的应用程序中,我在内存容器中使用了很多(C ++ std容器,但是我不认为这是相关的)。

在我的应用程序的一个“任务”期间,在使用率极高的情况下,专用字节内存使用量达到1GB。

就像上下文一样,这个任务是一个用户启动的涉及100,000个文件的任务。 用户可能会启动此function,然后让机器继续运行。

(不,我不会做任何愚蠢的事情,如加载文件到内存中 – 这个足迹是所有与正在进行的任务相关的元数据)。

对于大多数用户来说,这个任务中的内存使用率是可以忽略的 – 只有1%的用户想要执行5000个“事物”的50万个“事物”。

我即将开始一个过程,将大量这种内存中的东西以某种方式移动到磁盘上,例如,抓取文件,embedded式数据库。

但后来我想 – “等一等,所有这些解决scheme本质上都是将内存caching到磁盘上,这不就是虚拟内存的用途吗?

我对持续保存这些数据不感兴趣 – 这是纯粹的临时/临时性的东西,我需要在任务运行时访问。

所以我的问题是,我该怎么办?

我不想为这个1%做一个重大的重构,但我想知道运行一个应用程序具有高内存占用的影响。

我是否正确地说,我可能无法比Windows VMpipe理器做得更好?

这在什么情况下变得有害? 好吧,是的,如果我用完了所有的真实内存,然后重新加载页面会颠簸。 但是,如果是embedded式数据库,那么我是否还会这么做呢?

干杯,

约翰

是的,内存管理员会为你做这个工作。 虽然不是没有副作用,但它将从其他进程已映射的内存中驱逐页面,并将它们提供给您。 那些其他进程将会因此而变慢,当他们访问这样一个被换出的页面时,他们将会遇到页面错误。

这里的平衡行为是,你的应用程序是否“足够重要”,足以证明其他程序不会被人忽略。 通常在工作站上是肯定的,在服务器上是响亮的。