10

Похоже на это: Как "спячить процесс" в Linux/Windows?

Существуют ли какие-либо методы для спящего процесса таким образом, чтобы он не оставался в памяти? Например: если я не хочу использовать Firefox и не хочу закрывать процесс, и мне нужна свободная память, то как я могу на самом деле переводить процесс в спящий режим, чтобы освободить память, зарезервированную Firefox?

Мне нужно решение для Windows и Linux!

6 ответов6

5

Как Windows, так и Linux/Unix предоставляют способ приостановить или остановить выполнение процесса, удалив его из списка запущенных процессов.

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

Попытка записать процесс на диск для последующего возобновления не будет работать для чего-то нетривиального. Открытые дескрипторы сети и оконной системы не удастся, как только процесс возобновится.

4

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

Для Windows есть Free Process Freezer.

Для Linux и Mac OS X есть CrypoPID, как упомянуто в ответе yeedl.


Если вы хотите придумать индивидуальное решение:

Посмотрите на process dumping в Windows, например. ProcDump, возобновите его с помощью отладчика CLI из WinDBG.

Посмотрите на core dumping в Linux, например. core, возобновите его с помощью отладчика CLI, например, GNU GDB.

Бьюсь об заклад, программное решение, которое не включает отладчик, возможно, но это для переполнения стека.


Вы ищете очень конкретный вариант использования, почему бы просто не приостановить и позволить ему поменяться?

Вы бы потратили больше времени на запуск и приостановку ваших процессов ...

Я считаю, что вы можете оптимизировать свой рабочий процесс другим способом, который был бы более плавным.

2

Я знаю, что в Firefox вы можете сохранить сеанс.

В Linux это можно сделать с помощью CrypoPID.

Этот вопрос и этот вопрос пытаются ответить на него для Windows, но я не смог найти отличное решение для сохранения состояния приложения в файл, как я сделал для Linux.

1

Для Windows:

Я не знаю способа полностью исключить процесс из памяти, не убивая его, но вы можете обрезать его рабочий набор, свернув его главное окно. У Microsoft есть статья, объясняющая это: рабочий набор приложения обрезается, когда его окно верхнего уровня свернуто.

Итак, сначала сверните главное окно (окна), затем приостановите процесс, как предложено в вопросе, который вы связали.

Вы можете сделать оба с помощью когда-либо полезного Process Explorer.

  • Щелкните правой кнопкой мыши процесс, Окно -> Свернуть
  • Снова щелкните правой кнопкой мыши, Приостановить.
1

В Windows некоторые программы могут выгружать "неиспользованную" память программ.
Примером продукта, который может это сделать, является коммерческий Process Lasso.
Тем не менее, даже процесс Лассо выступает против этой практики.

Из правды об оптимизаторах памяти Windows :

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

Что касается Firefox, ознакомьтесь с разделом MozillaZine « Сокращение использования памяти» - Firefox, в котором содержится множество советов о том, как определить, какие расширения вызывают утечку памяти.

Существует также расширение Memory Fox для Firefox, которое:

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

По моему опыту, это расширение только откладывает неизбежное раздувание памяти Firefox. Единственное реальное решение - время от времени закрывать Firefox для освобождения памяти.

1

Вы можете отправить сигнал STOP для процессов в Linux. Остановленный процесс похож на паузу. Чтобы возобновить его, отправьте сигнал процесса CONT. Для отправки сигнала вы можете сделать это:

kill -STOP process_id

kill -CONT process_id

Остановленный процесс будет заменен, если системе требуется больше памяти.

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