Назад | Перейти на главную страницу

Как я могу максимизировать использование памяти одним процессом Windows?

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

Я думаю, что в Linux это называется «swappiness».

Вы не можете сказать O.S. хранить данные процесса в памяти; процесс может сделать это сам, если у него есть право «блокировать страницы в памяти», но он должен запрашивать это явно в коде; в противном случае Windows будет выгружать страницу по своему усмотрению.

Если вы полностью отключите файл подкачки, Windows просто зарезервирует для себя часть памяти и начнет отклонять запросы на выделение памяти, когда уже используется слишком много памяти.

Если вы оставите файл подкачки включенным (как это действительно необходимо), у вас нет абсолютно никакого контроля над тем, что и когда будет выгружено.

В любом случае, вы должны больше доверять диспетчеру памяти: его задача - выгружать неиспользуемые / ненужные данные, и если процесс активно обращается к своей памяти, очень мало шансов, что он будет выгружен. Если, конечно, использование памяти не настолько велико, что система просто не может с этим справиться; но если это так, вам действительно стоит подумать о том, чтобы добавить больше памяти в ящик.