Недостаточно Памяти

Поэтому пост крайне короткий.

Я разрабатывал наш централизованный обработчик ошибок, думая, что делать с сабжем, ведь при нехватке памяти поведение программы становится непредсказуемым.

И родилась ИДЕЯ.

Думаю я не первый, но такого решения я еще не встречал.

Так.

Что делать? Продолжать обработку ошибок, генерацию протоколов и т. д. — не вариант, все это может и не сработать: почти наверняка не сработает. Хотелось бы вернуть программу в рабочее состояние.

Что делать, если освободить ненужную память? Но где я могу его получить? — Чтобы продать то, что тебе не нужно, нужно сначала купить то, что тебе не нужно.

Вот решение: при запуске программы выделяем небольшой, но достаточный (эмпирическая оценка) блок памяти.

Мусор, никак не используемый.

В обработчике ошибок первым делом проверяем тип ошибки, если это OutOfMemoryException (или как это называется на вашем языке), освобождаем буфер и как минимум продолжаем обработку ошибки, возможно даже восстанавливаем работоспособность программы .

Было бы неплохо в какой-то момент заменить аварийное подразделение, но это уже сложно формализовать.

Теги: #программирование #обработка ошибок

Вместе с данным постом часто просматривают: