在我正在编写的应用程序中,我使用了很多内存容器(C++ std 容器,但我认为这无关紧要)。
在我的应用程序的一个“任务”中,在大量使用的边缘情况下,私有字节内存使用量达到 1GB。
就像一点上下文一样,这个任务是一个用户启动的任务,涉及 100,000 个文件。用户很可能会启动它,然后让机器运行。
(不,我不会做任何愚蠢的事情,比如将文件加载到内存中——这个足迹是与正在进行的任务相关的所有元数据)。
对于大多数用户而言,此任务期间的内存使用量可以忽略不计——只有 1% 的用户想要执行 500,000 件“事情”中的 5000 件“事情”。
我正要着手将大量内存中的内容以某种方式移动到磁盘上,例如暂存文件、嵌入式数据库。
但后来我想 - “等一下。所有这些解决方案本质上都是将内存缓存到磁盘。这不就是虚拟内存的用途吗?”。
我对保留这些数据不感兴趣——这纯粹是我在任务运行时需要访问的临时/临时内容。
所以我的问题是,我该怎么办?
我不想对那 1% 做重大的重构,但我想知道运行具有如此高内存占用的应用程序的影响。
我是否正确地说我可能无法比 Windows VM 管理器做得更好?
在什么情况下这会变得有害?好的,是的,如果我用完所有的真实内存,那么重新加载页面会很糟糕。但是,如果是嵌入式数据库,我不会有这种情况吗?
干杯,
约翰