X11

視窗是否最小化可用記憶體使用?

  • August 22, 2011

未顯示的最大化視窗和最小化視窗對最終使用者都是不可見的。未顯示是指活動視窗覆蓋的非活動最大化視窗。

但是有一個區別——這在應用程序切換服務中變得很明顯,就像 Compiz 一樣:視窗管理器“知道”最大化視窗的外觀(因此它可以生成縮略圖),而最小化視窗由圖示表示僅(不計算視窗的外觀/內容)。

那麼這是否意味著在最小化視窗時釋放記憶體?記憶體對 WM 可以最大化的視窗數量是否有限制?如果有這樣的限制,它是否實質性/相關?

想像一個不允許最小化(而只是在最大化的視窗之間切換)的 WM:這個 WM 是否會因為記憶體使用而對最終使用者施加相當大的限制?

感謝您澄清這一點——我可能有錯誤的想法。

最小化一個視窗可能會釋放一點記憶體,但這取決於應用程序,而且不會太多。無論如何,最小化不會比任何其他形式的隱藏產生更大的影響。

即使應用程序的視窗被最小化,它仍然在執行。該應用程序不需要僅僅因為它的一個視窗被最小化而在記憶體中保留更少的數據。

每當最小化或恢復其視窗之一時,都會通知應用程序。每當其視窗的一部分變為可見或隱藏時,它也會收到通知。應用程序可能會(但不太可能)對其視窗可能被隱藏的各種原因做出不同的反應:

  • 它可以最小化,這意味著不顯示視窗,而在其位置顯示一個圖示。
  • 它可以隱藏在其他視窗之後(包括螢幕保護程序的全屏視窗)。
  • 它可以顯示在不同的桌面、工作區、視口或您的視窗管理器所稱的任何位置上。
  • 它可以以其他方式隱藏,例如“陰影”(意味著僅顯示標題欄),或簡單地取消映射(意味著視窗管理器已決定不顯示視窗)。

如果應用程序的視窗完全隱藏,則應用程序不需要刷新視窗內容。如果它需要分配記憶體來刷新該內容,則在隱藏視窗時它不會這樣做。此外,如果視窗被隱藏(出於任何原因),應用程序可能會釋放 X 伺服器內的一些記憶體。

在實踐中更大的不同在於,如果沒有顯示視窗,則應用程序不會進行計算來重繪內容,因此可以換出繪製內容所需的數據。如果 RAM 很緊並且有一個視窗您暫時不會進行迭代,那麼最好不要映射該視窗。同樣,視窗未映射(隱藏在其他視窗後面、最小化、陰影……)的原因並不重要。

引用自:https://unix.stackexchange.com/questions/19187