У меня есть приложение, которое иногда использует большой объем данных. Пользователь имеет возможность загружать несколько файлов, которые используются в графическом отображении. Если пользователь выбирает больше данных, чем может обработать ОС, приложение довольно сильно падает. В моей тестовой системе это число составляет около 2 гигабайт физической памяти.
Какой хороший способ справиться с этой ситуацией? Я получаю «плохое выделение» из новой и пытался перехватить это, но все равно столкнулся с крахом. Я чувствую, как будто я иду в грязных водах, загружая такое количество данных, но это требование этого приложения для обработки такого рода большой загрузки данных.
Редактировать: я сейчас тестирую под 32-битной системой Windows, но приложение будет работать на разных версиях Windows, Sun и Linux, в основном на 64-битной, но на некоторых 32.
Обработка ошибок не является сильной: она просто оборачивает основной код создания экземпляра блоком catch catch, при этом catch ищет любое исключение в соответствии с жалобой другого партнера на невозможность перехвата bad_alloc каждый раз.
Я думаю, что вы, ребята, правы, мне нужна система управления памятью, которая не загружает все эти данные в ОЗУ, похоже, просто так.
Edit2: Лютер сказал это лучше всего. Спасибо, парень. Сейчас мне просто нужен способ предотвратить сбой, который при правильной обработке исключений должен быть возможен. Но в будущем я буду внедрять это решение о приеме.