1

我制作了一个应用程序,它必须在内存中存储大量数据以提高计算性能。

它是列表和对象的层次结构,其中顶部对象是. 加载数据时,会创建很多实例并将其添加到列表中。内存消耗增加,当涉及到 ~1.9Gb 时,程序崩溃。我的电脑 (Vista) 有 4Gb RAM,我已经在其他 RAM (XP) 较少的电脑上进行了测试,但它同时崩溃了。我不能使用超过 1.9Gb 的 RAM 吗?QList<myObject*>new myObject*

当加载较小的文件并且根据“Windows 任务管理器”的内存使用量为(例如)1.2Gb 时,我可以使用这些数据。但是,如果我想加载另一个文件,即使在调用delete所有对象并清除列表之后,也会从 1.2Gb 开始增长。为什么?
我尝试切换到QVector并调用squeeze(),但内存保持不变。我在这里阅读了关于 QLists 中动态内存分配的其他线程,但是在加载新文件之前真的没有办法重置内存吗?特别是因为它在 1.9Gb 之后崩溃;依次加载 3 个小文件,我就在那里。

非常感谢您的任何建议。

4

1 回答 1

4

如果您有 32 位 Windows,那么您的进程只能使用 2 GB 内存。您只是无法使用 32 位寻址更多内存。如果您需要更多内存,也许您应该更改为 64 位 Windows。

于 2010-07-08T14:42:50.510 回答