В настоящее время я только что проверил MemoryFailPoint
, потому что это единственный охранник памяти, который я знаю. Однако в документации упоминается, что это может изменить размер файла подкачки, и простой тест показывает, что это, вероятно, правда, то есть это не тот инструмент, который подходит для моей проблемы:
using (new MemoryFailPoint(10*1024)) // I have 10GB available memory
{
// memory consuming computation (around 2GB)
}
Это не вызвало никаких исключений - я наблюдал, как диспетчер задач показывает все меньше и меньше памяти, уменьшившись с 10 до 8 ГБ, но все вычисления завершились успешно. Так что это верно для его документации, проблема в том, что это бесполезно для меня.
Есть ли способ установить защиту памяти для фактической физической доступной памяти? Я хотел бы установить предел, выполнить вычисления, и если объем доступной памяти упадет ниже предела, я бы хотел получить исключение. Таким образом, в основном его поведение будет таким же, как у MFP
, но работает с реальной памятью без учета подкачки / виртуальной памяти.
Или я неправильно понял, как работает MFP
?
Ответ заранее - ожидание обычного OutOfMemory не требуется, мне нужна более надежная программа, чем эта.