С помощью MemoryFailPoint
вы можете сказать .NET, что вам понадобится определенный объем памяти. Проблема, однако, в том, что даже в этой системе есть пространство подкачки.
Я считаю, что очень трудно достичь того, чего вы хотите достичь здесь.Скажем, вы бы использовали некоторые системные индикаторы и индикаторы производительности, чтобы узнать, сколько физической памяти доступно, и, основываясь на этом, выполнить некоторые задачи.Если после того, как вы выполните эту проверку, другой процесс перехватит физическую память, ваши первоначальные вычисления больше не будут применяться, и часть вашей памяти будет вытеснена для замены.
У меня естьпредложение. У вас может быть параметр конфигурации с максимально допустимым объемом памяти, который будет использоваться приложением?При этом вы можете:
Попытаться выяснить, сколько ресурсов использует ваше приложение, например, на основе сетевого подключения (если ваше приложение является сетевым сервером) и регулировать количество подключений на основена максимальное потребление памяти, или
Может быть запущен второй поток, который проверяет каждые 10 секунд или минут общего потребления памяти с помощью GC.GetTotalMemory()
и начинает отклонять соединения (снова,если ваше приложение является сетевым сервером), как только вы достигнете этого максимума.
Это должен быть параметр конфигурации вместо, например, объема доступной физической памяти, потому что вы не знаете, что другоена машине запущены приложения.