Как снова «поменять» память сразу из файла подкачки в физическую память в Windows (например, подкачка linux)


10

Есть ли способ вернуть обратно (чтобы вернуть все данные памяти, которые были помещены в файл подкачки (или подкачку, что вы предпочитаете)) памяти на ПК с Windows?

В Linux это легко сделать с помощью swapoff / dev / sdaX, где X - раздел подкачки. На Windows, кажется, просит меня перезагрузить каждый раз ..

Причина, по которой я хотел бы сделать это, заключается в том, что даже если обмен данными в файл подкачки позволяет мне играть в ресурсоемкую игру полностью в физической памяти, когда я останавливаю игру, все остальные мои программы запускаются медленный. Это или конечно нормально; все программы были помещены в файл подкачки, потому что моя оперативная память была слишком мала, и весь доступ к памяти этих программ после игр наталкивался на серьезные сбои страниц, что приводило к серьезным задержкам и, как следствие, к разочарованию.

Однако этого разочарования можно легко избежать, просто позволив ПК скопировать все данные обратно в физическую память на минуту или около того, а затем возобновить работу на быстродействующем ПК! (вместо того, чтобы терпеть медлительность во время работы)

Заранее спасибо за любые советы по этому вопросу!

С уважением


Вам нужен «гипервизор» с несколькими работающими на нем копиями Windows. Вы приостанавливаете одно и отменяете другое. Это делается довольно часто с другими системами, но я не уверен, что есть гипервизор, который может справиться с этим для Windows.
Даниэль Р Хикс

Ответы:


6

К сожалению нет. Как работает система виртуальной памяти Windows, многие страницы просто не могут быть отображены, пока они не выйдут из строя, и не могут быть сохранены в памяти, если они не отображаются. Поэтому Windows должна ждать, пока страницы не будут доступны.


Может быть, какой-то достаточно привилегированный сторонний процесс может попытаться получить доступ к этим страницам, чтобы они допустили ошибку?
плохой

Это не принесло бы пользы другому процессу для доступа к страницам. Они должны быть включены в процессы приложений, которые вы пытаетесь использовать.
Джейми Ханрахан

Если подумать, это можно сделать ... вроде. Вы должны внедрить удаленный поток в целевой процесс. Затем этот поток выполняет VirtualQuery в адресном пространстве, а затем просто читает каждую страницу, приватную для процесса. Однако нет никакого способа отличить страницы, которые были в ОЗУ и были позже выгружены, и страницы, которые никогда не были выгружены в первую очередь. Также не было бы способа идентифицировать страницы, которые больше никогда не понадобятся процессу. Таким образом, вы будете разбираться со многими вещами, которые вам не нужны.
Джейми Ханрахан

@JamieHanrahan Похоже, это будет работать.
Дэвид Шварц

1

К сожалению, такой опции нет.

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


Или полностью отключить своп. Не обязательно для Windows, но на моих компьютерах с Linux / BSD я отключаю любые формы ротационного свопинга, потому что это не приносит пользы, и когда что-то начинает его использовать, вместо того, чтобы превышать жесткое ограничение, они все замедляют.
убийца

1
Отключение файла подкачки не приведет к отключению подкачки на диск. Это отключит только выгрузку страницы из закрытого адресного пространства. Содержимое отображенного в памяти файла все равно будет выгружаться и выгружаться.
Джейми Ханрахан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.