我已经实现了一个系统,该系统将一些数据作为输入,并产生一个非常大的结果vector< vector< vector<int> > >
,然后我将其输出到一个文件中。
计算结果后,我决定计算这个最终 3d 向量中的数字总数,结果是:1386502951
这意味着存储该向量所需的内存总量至少为1386502951*4 bytes = 5.16512599 GB
但是我的 RAM 内存只有 4 GB。
有人可以向我解释这是怎么可能的吗?
先感谢您!
我已经实现了一个系统,该系统将一些数据作为输入,并产生一个非常大的结果vector< vector< vector<int> > >
,然后我将其输出到一个文件中。
计算结果后,我决定计算这个最终 3d 向量中的数字总数,结果是:1386502951
这意味着存储该向量所需的内存总量至少为1386502951*4 bytes = 5.16512599 GB
但是我的 RAM 内存只有 4 GB。
有人可以向我解释这是怎么可能的吗?
先感谢您!
您的应用程序能够分配比实际安装在计算机上更多的内存,因为它支持虚拟内存。分配、分页和释放虚拟内存由操作系统处理,以允许您的应用程序运行而不必担心耗尽物理内存。
请记住,当您的应用程序从其堆中释放内存时,可能不会立即释放分配的内存。这倾向于使人们认为他们的应用程序有时会使用更多的内存。
有很多网站讨论了虚拟和物理主题以及操作提供的任何 API,允许您对其进行一些控制。快速的 Google Dance 应该会为您提供大量关于该主题的链接。
这可能有很多原因不会失败。
正如评论中所述,最有可能的是 Windows 将其中的很大一部分放在虚拟内存(而不是 RAM)中。
另一种选择(在某些情况下)是优化器正在清理您的列表(也许?)
准确查看正在发生的事情的最佳方法是打开任务管理器并切换到性能选项卡并查看它使用的 RAM 监视器。