Как ограничить потребление ОЗУ конкретного исполняемого файла?

2470
user400424

Microsoft Edge пожирает оперативную память как сумасшедшую, и я хочу немного уменьшить ее. Мне все равно, если это делает просмотр на нем запаздывающим, я просто хочу, чтобы моя оперативная память распределялась равномерно по моим открытым программам.

Частности исполняемый Я хочу ограничить это C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdgeCP.exe. Кажется, это дочерний процесс, который потребляет большую часть оперативной памяти. Он также открыт несколько раз одновременно, как Chrome

-2
Если Edge использует много памяти на ваш вкус, есть ли причина, по которой вы используете ее, вместо одного из других существующих браузеров? Там действительно не пустая трата, чтобы запретить использование памяти программой. Единственный способ сделать это состоит в том, чтобы загрузиться с Windows и сказать, что существует меньше памяти, но это не решило бы проблему, потому что в итоге у вас было бы меньше памяти, и проблема была бы хуже, чем она уже есть. Ramhound 6 лет назад 0
Возможный дубликат [Можно ли ограничить память, которую приложение может использовать?] (Https://superuser.com/questions/19611/is-it-possible-to-limit-the-memory-an-application- в разрешенных к применению) Ramhound 6 лет назад 1
@Ramhound это единственный браузер, который соответствует эстетике Windows 10 из коробки user400424 6 лет назад 0

2 ответа на вопрос

2
xavier_fakerat

Возможно. Вам необходимо создать правило монитора сторожевого таймера, чтобы ограничить использование памяти исполняемым файлом.

  • Как сказал @ wp78de, установка слишком низкого значения может привести к зависанию или аварийному завершению процесса.

    Чтобы автоматизировать процесс, вы можете использовать ProcessLasso для создания правила наблюдения за процессом, чтобы регулярно обрезать «виртуальную память» (частную память, используемую процессом).

  • Откройте ProcessLasso GUI, щелкните правой кнопкой мыши целевой исполняемый файл и выберите «Установить правило сторожевого таймера для этого процесса».

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

Позволяет ли установка жесткого ограничения, например 3072 МБ (3 ГБ), применять ко всем процессам с одинаковым именем? MicrosoftEdgeCP.exe имеет несколько процессов, и я хочу ограничить память для всех из них в целом, а не для каждого его экземпляра. user400424 6 лет назад 0
Да, это относится ко всем процессам из исполняемого дерева, например, chrome.exe (в котором может быть около 6 или около того процессов chrome.exe), все они обслуживаются правилом наблюдения за процессом xavier_fakerat 6 лет назад 0
кажется, что это не так? Я попытался понизить планку до чего-то нелепого, например, до 256 МБ, и я попытался открыть несколько вкладок, таким образом, имея несколько экземпляров «MicrosoftEdgeCP.exe», и объединенное использование памяти явно превышает 256 МБ, но это не сработало вообще. Это только сработало, когда один из множества экземпляров на самом деле достиг этой суммы. Так что это на единицу, а не в сумме. user400424 6 лет назад 0
0
wp78de

Это сложный вопрос, и лечение, скорее всего, вызовет больше проблем, чем болезнь. Так как, если у рассматриваемого приложения не хватает памяти, оно, скорее всего, вылетит (даже BSOD возможен).

Во всяком случае, цитируя Клинта Хаффмана, он отвечает на тот же вопрос:

Ответ в основном зависит от общего использования физической памяти, но может быть ограниченным.

Он немного объясняет фон объема физической памяти, который использует процесс, который называется «Рабочий набор». Самое интересное для вас следующее

есть инструмент, называемый диспетчером системных ресурсов Windows, который может ограничивать количество рабочего набора, используемого процессом. Этот инструмент можно установить (не устанавливается по умолчанию) через консоль добавления компонентов в Windows Server 2008 R2.

Этот компонент предназначен для версий Windows Server. Тем не менее, вы должны иметь возможность установить его и на более новые несерверные версии Windows (см. Последний комментарий Клинта). Но нет гарантии. Вы можете найти WSRM здесь .

Чтобы имитировать ограничения памяти, вы можете использовать виртуальную машину с ограниченным объемом оперативной памяти, но я думаю, это не то, что вам нужно. В клиентских версиях (и более новых версиях сервера) WSRM был заменен на системный монитор, который не имеет возможностей ограничения памяти (AFAIK).

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

Похожие вопросы