Как избежать нехватки памяти в приложении с высоким потреблением памяти? C / C ++

Я написал конвертер, который принимает XML-файлы openstreetmap и преобразует их в двоичный формат рендеринга, который обычно составляет около 10% от исходного размера. Размер входного файла обычно составляет 3 ГБ и больше. Входные файлы не загружаются в память все сразу, но передаются в виде точек и полисов, затем запускается bsp и файл выводится. В последнее время на больших файлах ему не хватает памяти и он умирает (у рассматриваемого есть 14 миллионов точек и 1 миллион полигонов). Обычно моя программа использует от 1 до 1,2 ГБ оперативной памяти, когда это происходит. Я пытался увеличить виртуальную память с 2 до 8 ГБ (на XP), но это изменение не произвело никакого эффекта. Кроме того, так как этот код с открытым исходным кодом, я хотел бы, чтобы он работал независимо от доступного RAM (хотя и медленнее), он работает на Windows, Linux и Mac.

Какие методы я могу использовать, чтобы избежать нехватки памяти? Обрабатывать данные в меньших подмножествах и затем объединять окончательные результаты? Используете мой тип обработчика виртуальной памяти? Есть другие идеи?

Ответы на вопрос(15)

Ваш ответ на вопрос