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