A janela minimiza o uso de memória livre?

13

Tanto a janela maximizada não exibida quanto a janela minimizada são invisíveis para o usuário final. Por undisplayed quero dizer uma janela maximizada inativa coberta pela janela ativa.

No entanto, há uma diferença - que se torna evidente nos serviços de alternância de aplicativos, como no Compiz: a aparência da janela maximizada é "conhecida" pelo Gerenciador de Janelas (portanto, pode produzir uma miniatura), enquanto a janela minimizada é representada somente por um ícone (a aparência / conteúdo da janela não é computada).

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, ela é substancial / relevante?

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

Obrigado por esclarecer isso --- eu posso ter a idéia errada.

    
por Benjamin 22.08.2011 / 18:17

1 resposta

10

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

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

Um aplicativo é notificado sempre que uma de suas janelas é minimizada ou restaurada. Ele também é notificado sempre que parte de sua janela se torna visível ou oculta. É possível, mas improvável, que o aplicativo reaja de maneira diferente a várias razões pelas quais sua janela pode estar oculta:

  • Pode ser minimizado, o que significa que a janela não é mostrada 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, espaço de trabalho, porta de visualização diferente ou o que seu gerenciador de janelas chamar.
  • Ele pode ser escondido de alguma outra forma, por exemplo, "sombreado" (ou seja, apenas uma barra de título é mostrada) ou simplesmente não mapeado (significando que o gerenciador de janelas decidiu por qualquer motivo que a janela não deve ser exibida).

Se a janela de um aplicativo estiver completamente oculta, o aplicativo não precisará atualizar o conteúdo da janela. Se precisar alocar memória para atualizar esse conteúdo, ele não fará isso enquanto a janela estiver oculta. Além disso, se uma janela estiver oculta (por qualquer motivo), o aplicativo pode 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 está sendo exibida, o aplicativo não faz cálculos para redesenhar o conteúdo e, portanto, os dados necessários para desenhar o conteúdo podem ser trocados. Se a memória RAM estiver apertada e houver uma janela na qual você não vai interagir por um tempo, é melhor se a janela não estiver mapeada. Mais uma vez, a razão pela qual a janela não está mapeada (escondida atrás de outras, minimizada, sombreada,…) não é importante.

    
por 22.08.2011 / 19:27