A janela minimiza o uso de memória livre?

13

A janela maximizada não exibida e a janela minimizada são invisíveis para o usuário final. Por não exibido, quero dizer uma janela maximizada inativa coberta pela janela ativa.

Porém, existe uma diferença --- que fica evidente nos serviços de troca de aplicativos, como no Compiz: a aparência maximizada da janela é "conhecida" pelo Gerenciador de Janelas (portanto, pode produzir uma miniatura), enquanto a janela minimizada é representada por um ícone somente (a aparência / conteúdo da janela não é computado).

Então, isso significa que a memória é liberada quando uma janela é minimizada? Existe um limite imposto pela memória ao número de janelas que um WM pode ter maximizado? Se existe tal limitação, é substancial / relevante?

Imagine um WM que não permita minimizar (mas apenas alterna entre janelas maximizadas): este WM estaria impondo consideráveis ​​limitações ao usuário final devido ao uso de memória?

Obrigado por esclarecer isso. Talvez eu tenha uma idéia errada.

Benjamin
fonte

Respostas:

10

Minimizar uma janela pode liberar um pouco de memória, mas depende do aplicativo e não será muito. De qualquer forma, minimizar não fará mais diferença do que qualquer outra forma de ocultação.

Mesmo se a janela de um aplicativo for minimizada, ela ainda estará em execução. O aplicativo não precisará manter menos dados na memória apenas porque uma de suas janelas é minimizada.

Um aplicativo é notificado sempre que uma de suas janelas é minimizada ou restaurada. Também é notificado sempre que parte da janela fica visível ou oculta. É possível, mas improvável, que o aplicativo reaja de maneira diferente a vários motivos pelos quais sua janela possa estar oculta:

  • Pode ser minimizado, o que significa que a janela não é exibida e um ícone é exibido em seu lugar.
  • Ele pode estar oculto atrás de outras janelas (incluindo a janela de tela cheia de um protetor de tela).
  • Ele pode ser exibido em uma área de trabalho, área de trabalho, janela de visualização ou em qualquer outra forma que o gerenciador de janelas chamar.
  • Ele pode ser oculto de alguma outra maneira, por exemplo, "sombreado" (significando que apenas uma barra de título é exibida) ou simplesmente não mapeado (o que significa que o gerenciador de janelas decidiu por qualquer motivo que a janela não devesse ser exibida).

Se a janela de um aplicativo estiver completamente oculta, ele não precisará atualizar o conteúdo da janela. Se precisar alocar memória para atualizar esse conteúdo, não o fará enquanto a janela estiver oculta. Além disso, se uma janela estiver oculta (por qualquer motivo), o aplicativo poderá liberar um pouco de memória dentro do servidor X.

O que faz mais diferença na prática é que, se uma janela não estiver sendo exibida, o aplicativo não fará cálculos para redesenhar o conteúdo e, portanto, os dados necessários para desenhar o conteúdo poderão ser trocados. Se a RAM estiver fraca e houver uma janela com a qual você não interagirá por um tempo, é melhor que a janela não esteja mapeada. Novamente, a razão pela qual a janela não é mapeada (oculta atrás de outras pessoas, minimizada, sombreada ...) não é importante.

Gilles 'SO- parar de ser mau'
fonte