O que acontece quando eu fechei todas as janelas de um aplicativo no OSX?

8

Estou acostumado ao Windows, onde os aplicativos desaparecem da minha bandeja de tarefas, do menu Alt+ Tabetc. quando fecho a última janela; por isso, é um pouco inesperado para mim que o ícone de um aplicativo ainda esteja no meu Dock e nas minhas Command+ Tabjanelas.

A memória, o uso da CPU, etc. do computador muda entre esse estado e quando eu fecho completamente (por exemplo, Command+ Q) um aplicativo? (Eu tenho o OS X 10.8, se isso importa.)

Mark Rushakoff
fonte

Respostas:

12

Não há consenso sobre se o aplicativo deve sair quando você fecha a última janela ou se o aplicativo continua em execução; portanto, cabe a cada desenvolvedor decidir sobre um aplicativo por aplicativo. O que é verdade é que sair de um aplicativo libera os recursos necessários - mesmo que alguns arquivos e códigos ainda estejam armazenados na RAM ou no cache até que essas lojas sejam liberadas ou usadas para armazenar em cache outros aplicativos e arquivos posteriormente.

Além disso, não há restrições que proíbam codificação incorreta, sobrecarregando a memória, usando a CPU quando nenhuma tarefa real deve ser executada, para que também varie caso a caso.

O Windows e o OS X têm muito bom desempenho de programação, sistemas de paginação, controle de encadeamento, etc ... e a CPU é a mesma em termos de desligar núcleos e diminuir / aumentar a frequência com base na carga para economizar energia e fornecer uma " turbo boost "quando apenas um núcleo está executando um único thread.

O OS X está começando a permitir que os aplicativos sinalizem que suportam o encerramento súbito - para que o sistema operacional possa lidar com o encerramento automático, o término repentino e o salvamento automático de documentos (mais versões) para um desenvolvedor de aplicativos. Portanto, mesmo que você tenha dito ao sistema operacional para executar um programa, ele pode e decide "encerrar" o processo para não consumir recursos enquanto estiver fazendo outras coisas com o computador.

Por fim, com o PowerNap no hardware do OS X, a linha entre acordado e acordado começa a ficar borrada, com o sistema ativando parcialmente para executar tarefas periódicas de rede que tornam o OS X um pouco diferente do tradicional UNIX e Windows em termos de pensamento sobre aplicativos e uso de recursos.

Mais leitura:

bmike
fonte
11
Embora não seja uma regra difícil, os aplicativos baseados em documentos geralmente permanecem em execução quando todas as janelas estão fechadas (pense em TextEdit ou Mail), enquanto os aplicativos de janela única geralmente fecham quando a janela está fechada (pense nas Preferências do Sistema ou na App Store) . A razão para isso, se um aplicativo consiste apenas em uma janela, é provável que você possa fazer pouco sem essa janela aberta (há exceções, é claro, como o iTunes).
daGUY 29/01
3

A resposta já dada aqui é uma boa resposta e muito precisa, mas eu só quero dividir isso em termos de leigos para você.

Alguns programas terminam quando você fecha toda a janela deles, outros não. Além disso, alguns programas têm uma opção nas configurações em que você, o usuário, pode decidir se deseja que o programa saia quando a última janela for fechada.

No que diz respeito ao uso da memória, o OS X usa o gerenciamento de memória projetado para canalizar a maior quantidade de memória para o aplicativo principal (ativo), enquanto restringe a quantidade de memória que está sendo usada por aplicativos que não são o aplicativo ativo. Como já foi mencionado, porém, o quão bem isso funciona depende em grande parte de quão bem cada programa individual foi codificado.

Gavin Anderson
fonte
11
Interessante - nunca ouvi falar do sistema VM preferir as janelas ativas. +1 para obter mais de uma resposta curta e direta. Se você pudesse criar um link para detalhes sobre a otimização da memória, isso seria incrível.
bmike