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