Поэтому пост крайне короткий.
Я разрабатывал наш централизованный обработчик ошибок, думая, что делать с сабжем, ведь при нехватке памяти поведение программы становится непредсказуемым.
И родилась ИДЕЯ.
Думаю я не первый, но такого решения я еще не встречал.
Так.
Что делать? Продолжать обработку ошибок, генерацию протоколов и т. д. — не вариант, все это может и не сработать: почти наверняка не сработает. Хотелось бы вернуть программу в рабочее состояние.
Что делать, если освободить ненужную память? Но где я могу его получить? — Чтобы продать то, что тебе не нужно, нужно сначала купить то, что тебе не нужно.
Вот решение: при запуске программы выделяем небольшой, но достаточный (эмпирическая оценка) блок памяти.
Мусор, никак не используемый.
В обработчике ошибок первым делом проверяем тип ошибки, если это OutOfMemoryException (или как это называется на вашем языке), освобождаем буфер и как минимум продолжаем обработку ошибки, возможно даже восстанавливаем работоспособность программы .
Было бы неплохо в какой-то момент заменить аварийное подразделение, но это уже сложно формализовать.
Теги: #программирование #обработка ошибок
-
Как Обстоят Дела С Веб-Каталогами
19 Oct, 24 -
Обновленная История Стива Джобса
19 Oct, 24 -
Amd Puma Преследует Intel Centrino
19 Oct, 24 -
У Кого Оно Короче?
19 Oct, 24