
Procurei uma resposta nos fóruns, mas não consegui encontrar a resposta que procurava [1] , então pensei que poderia ser do interesse de mais pessoas por aqui.
Eu realizo grande parte do meu trabalho no navegador (ou para o navegador, se você quiser dizer assim). Costumo usar o Chrome, porque ele possui nativamente muitos dos recursos mais recentes de que preciso (coisas do DevTools, principalmente, mas não só). Aliás, normalmente estou executando a última versão/compilação disponível do Chrome em um desktop Vaio com 4 GB de RAM e CPU dual core e Ubuntu 12.04 como distro e Gnome como gerenciador de janelas.
Então, fiquei curioso sobre a) por que o Chrome gera tantos threads, mesmo abrindo apenas três das quatro guias eb) existe alguma maneira de alocar mais memória ao Chrome para evitar a degradação de seu desempenho?
Desde já, obrigado,
Nacho
PS [1] Encontrei tópicos sobre congelamento ou falta de memória do Chrome, mas não sobre os motivos para isso ou para evitar que isso acontecesse.
PPS Claro, eu sempre poderia comprar uma máquina mais nova e mais capaz e é exatamente isso que estou tentando avaliar: isso é uma questão de hardware desatualizado ou o problema continuará aparecendo em qualquer máquina (de tamanho decente, mas não enorme)?
Responder1
O Chrome separa cada parte principal do navegador em processos separados. Por exemplo, o próprio navegador é seu próprio processo, cada guia é seu próprio processo e cada extensão é seu próprio processo. Provavelmente também existe um processo de GPU separado. (Você pode ver esses detalhes acessando about:memory).
Parte da vantagem aqui é o acesso limitado que cada parte tem às outras partes. Por exemplo, se houvesse um script malicioso em uma extensão ou guia, então (idealmente) ele poderia afetar apenas seu próprio processo e não derrubaria todo o navegador. Se uma guia ficar congelada por qualquer motivo, apenas essa guia (e possivelmente as guias que você abre nessa guia) será desativada, mas não o navegador inteiro. (Veja também sobre: sandbox.)
Você não pode pré-alocar memória para o Chrome; se o Chrome precisar de mais memória e estiver disponível, ele será necessário. Observe que a condição limitante também pode estar no lado de E/S, já que o Chrome precisa ler seu perfil, preferências e pelo menos parte de seu histórico na inicialização e no uso geral. Linux e Unix possuem um recurso que permite armazenar arquivos na RAM, o que resultará em acesso mais rápido (a leitura da memória é mais rápida do que a leitura do disco rígido e também pode reduzir o desgaste no caso de muitas gravações), mas com potencial perda de dados (o conteúdo da RAM é perdido quando o computador fica sem energia ou desliga).
Existe um script chamadodaemon de sincronização de perfilque armazena o perfil do navegador e o cache na RAM e sincroniza o perfil de volta ao disco rígido a cada hora. Isso significa que se o seu computador perder energia ou desligar bruscamente, seu perfil e histórico terão no máximo uma hora. (No desligamento normal, o script sincroniza o conteúdo da memória para o disco rígido.) Consulte o link acima para obter mais informações sobre instalação eessepágina para instalação no Ubuntu.
Observe que o Chrome(ium) armazena o cache separadamente do seu perfil, e o script cuida apenas do perfil (está fora do escopo do script gerenciar o cache). Você pode querer mover o cache do local atual para o diretório do perfil e adicionar um link simbólico do local antigo para o novo local.