1

Я понимаю, что виртуальная память заключается в том, что когда приложение не используется в течение определенного периода времени, используемая память записывается на диск. Когда я использую приложение (netbeans), оно кажется очень медленным, когда я возвращаюсь к нему после примерно десяти минут выполнения чего-то другого, например, просмотра веб-страниц.

Мой вопрос, во-первых, прав ли я относительно виртуальной памяти, и если да, то во-вторых, есть ли способ указать, поддерживает ли определенная память свою оперативную память в течение более длительного времени, чем другие? Или я должен купить больше оперативной памяти? Я использую Windows 8.1 64-bit

(Или загрузить больше оперативной памяти) (Шутка)

1 ответ1

0

Невозможно сделать то, что вы пытаетесь сделать в стандартной Windows. Windows автоматически разрешит программам с высокой частотой отказов страниц использовать больше ОЗУ и сократит количество других, если ОЗУ недостаточно.

Возможно, что существует служебная программа, которая могла бы отслеживать ОЗУ, назначенную различным процессам, и пытаться отговорить некоторые из них от разбиения на страницы, используя, например, API-интерфейсы VirtualLock и SetProcessWorkingSetSize.

Однако с этим достаточно ограничений, что он не принесет много пользы. Основным из них является то, что VirtualLock выполняется по диапазону адресов, и такая программа не имела бы возможности "узнать", какие диапазоны адресов в целевом процессе были важны для блокировки. (Вы не можете просто запереть все; там нет места.) Эти API в основном предназначены для использования самим процессом или в наборе взаимодействующих (и совместно осведомленных) процессов, а не для настройки случайных других процессов.

(nb: VirtualLock может быть выполнен кросс-процесс, вызывая его из потока, созданного в целевом процессе через CreateRemoteThread.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .