Сводит ли окно к минимуму использование свободной памяти?

13

И нераспечатанное развернутое окно, и свернутое окно невидимы для конечного пользователя. Под неиспользованным я подразумеваю неактивное развернутое окно, закрытое активным окном.

Однако есть разница - которая становится очевидной в сервисах переключения приложений, как в Compiz: внешний вид развернутого окна «известен» диспетчеру окон (следовательно, он может создавать миниатюру), в то время как свернутое окно представлено значком только (внешний вид / содержимое окна не вычисляется).

Значит ли это, что память освобождается, когда окно свернуто? Существует ли ограничение, накладываемое памятью на количество окон, которое WM может увеличить до максимума? Если есть такое ограничение, является ли оно существенным / актуальным?

Представьте себе WM, которая не позволяет минимизировать (но просто переключается между развернутыми окнами): будет ли эта WM накладывать значительные ограничения на конечного пользователя из-за использования памяти?

Спасибо за разъяснение - возможно, я ошибаюсь.

Вениамин
источник

Ответы:

10

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

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

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

  • Его можно свернуть, то есть окно не отображается, а на его месте отображается значок.
  • Его можно скрыть за другими окнами (включая полноэкранное окно заставки).
  • Он может отображаться на другом рабочем столе, в рабочей области, в окне просмотра или как там их называет ваш оконный менеджер.
  • Он может быть скрыт другим способом, например, «затенен» (имеется в виду только строка заголовка) или просто не отображен (имеется в виду, что диспетчер окон по какой-то причине решил, что окно не должно отображаться).

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

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

Жиль "ТАК - прекрати быть злым"
источник