Я создаю приложение, которое должно хранить много данных в памяти, чтобы улучшить производительность вычислений.
Это иерархия списков и объектов, где верхним объектом является QList<<em>myObject*</em>>
. При загрузке данных создается много экземпляров new myObject*
, которые добавляются в список. Потребление памяти растет, и когда дело доходит до ~ 1,9 Гб, программа вылетает. Мой компьютер (Vista) имеет 4 ГБ ОЗУ, и я проверил на других компьютерах с меньшим количеством ОЗУ (XP), и в тот же момент он падает Могу ли я использовать не более 1,9 ГБ ОЗУ?
Когда файл меньшего размера загружен и использование памяти в соответствии с «диспетчером задач Windows» составляет (скажем) 1,2 ГБ, я могу работать с данными. Но если я хочу загрузить другой файл, увеличение начинается с 1.2 Гб даже после вызова delete
для всех объектов и очистки списка. Почему?
Я попытался переключиться на QVector
и позвонить squeeze()
, но память осталась прежней. Я прочитал другие темы о динамическом распределении памяти в QLists, но неужели нет способа сбросить память перед загрузкой нового файла? Тем более что он вылетает после 1.9Gb; загружаю 3 маленьких файла последовательно и я там.
Большое спасибо за любые предложения.