Остановка приложения от выделения памяти до того, как оно исчерпает файл подкачки Windows (или любой другой ОС)
В настоящее время я сталкиваюсь с ситуацией, когда мое приложение на основе C++ OpenGL сознательно выделяет огромные объемы памяти для ресурсов. На самом деле их так много, что Windows просто останавливается, и я получаю совершенно пустой экран. После этого я обнаружил (случайно - Windows даже не сказала мне!), Что Windows была вынуждена расширить файл моей страницы до 30 ГБ.
Для приложений с потенциально большим использованием частной памяти, но также с необходимостью работы на оборудовании с низким объемом памяти, а также с использованием преимуществ оборудования с большим объемом памяти, должна быть определенная схема для определения максимального использования памяти (и соответствующие действия). разработаны.
В этом случае я бы подумал, что мы хотим провести тонкую грань между слишком большим выделением, чтобы толкнуть Windows через край, и недостаточным распределением (вызывающим плохой пользовательский опыт), поэтому я ищу способ определить разумную точку в котором прекратить выделять память в моем приложении, чтобы защитить Windows от самого себя. Из небольшого обучения самому себе, слушая Марка Руссиновича ( https://www.youtube.com/watch?v=AjTl53I_qzY), я не могу найти никакого практического правила.
Каковы, если таковые имеются, наилучшие практические меры для приложения, которое ограничивает само выделение ресурсов и заставляет Windows (или любую ОС) постоянно заменять файл подкачки / заканчивать пространство файла подкачки (убивая систему)?
Должны ли мы просто следить за размером файла подкачки и частными байтами, выделенными процессу, и буквально просто прекратить выделение текстур, когда частные байты увеличиваются до некоторого произвольного процента или размера файла подкачки, в качестве последнего средства, чтобы избежать гибели системы? Тогда возникает вопрос: "Как вы выясните это"?
Цени любую помощь!
Спасибо - Laythe