Как я могу максимально использовать память одного процесса Windows?
У меня есть система с большим объемом памяти. Сейчас, чтобы предотвратить подкачку страниц одним приложением, я полностью отключил файл подкачки. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу максимизировать использование памяти для одного процесса, который мне небезразличен. Я хочу отключить подкачку для отдельного процесса, чтобы он никогда не выгружался, и он мог использовать большую часть (95%?) Памяти; все остальные процессы должны быть в состоянии выгружать. Прямо сейчас мы используем ~ 80% доступной памяти с отключенным файлом подкачки, но мы знаем, что нас не заботит отправка этих процессов в файл подкачки. Это не программа с открытым исходным кодом, которую я запускаю, поэтому я не могу изменить код для использования других вызовов.NET/Windows, чтобы предотвратить подкачку страниц самостоятельно.
Я думаю, что в Linux это называется "перестановка".
1 ответ
Вы не можете сказать ОС хранить данные процесса в памяти; процесс может сделать это сам, если он имеет право "блокировать страницы в памяти", но он должен явно запрашивать это в коде; в противном случае Windows выведет страницу так, как считает нужным.
Если вы полностью отключите файл подкачки, Windows просто зарезервирует часть памяти для себя и начнет отклонять запросы выделения памяти, когда слишком много памяти уже используется.
Если вы оставите файл подкачки включенным (как вы действительно должны), вы абсолютно не сможете контролировать, что и когда будет выгружено.
В любом случае, вы должны лучше доверять диспетчеру памяти: его задача состоит в том, чтобы выстраивать неиспользуемые / ненужные данные, а если процесс активно обращается к своей памяти, очень мало шансов, что он будет выгружен. Если, конечно, использование памяти не будет настолько высоким, что система просто не справится с этим; но если это так, то вам действительно стоит подумать о том, чтобы добавить больше памяти в коробку.