我创建了一个必须在内存中存储大量数据的应用程序,以提高计算性能。
它是列表和对象的层次结构,其中顶部对象是QList<myObject*>
。加载数据时,会创建许多new myObject*
个实例并将其添加到列表中。内存消耗增长,当达到~1.9Gb时程序崩溃。我的电脑(Vista)有4Gb内存,我已经在其他计算机上测试了较少的内存(XP),它在同一点崩溃了。我可以使用超过1.9Gb的RAM吗?
当加载较小的文件并且根据“Windows任务管理器”的内存使用量(例如)1.2Gb时,我可以处理数据。但是如果我想加载另一个文件,即使在所有对象上调用delete
并清除列表之后,增长也从1.2Gb开始。为什么呢?
我尝试切换到QVector
并调用squeeze()
,但内存保持不变。我在这里读过关于QLists中动态内存分配的其他线程,但是在加载新文件之前是否真的无法重置内存?特别是因为它在1.9Gb之后崩溃;按顺序加载3个小文件,我就在那里。
非常感谢任何建议。
答案 0 :(得分:4)
如果您有32位Windows,那么您的进程只能使用2 GB内存。你不能用32位来处理更多的内存。如果您需要更多内存,可能应该更改为64位Windows。