Reduzir o consumo de memória do Chrome é uma das prioridades da equipe neste ano. Já vimos uma redução de até 45% no uso de memória do Gmail graças às melhorias no processo de coleta de lixo do V8, mas estamos apenas começando. Um dos nossos próximos experimentos de uso de memória é voltado para acumuladores de guias (como eu). Esse recurso é chamado Descarte de guia.
O descarte de guias está disponível como um experimento no Chrome 46 e versões mais recentes.
Contexto
Para cada guia aberta, o processo do renderizador geralmente leva cerca de 50 MB, embora a maioria das pessoas use apenas uma guia por vez. Se você estiver com 10 guias abertas, há pelo menos 450 MB de memória sendo gasto apenas para manter o estado da guia em segundo plano. Isso pode ficar um pouco complicado com o tempo.
Um dos nossos objetivos é reduzir a memória usada nas guias que você não está usando. Se eu analisar quais guias estão consumindo minha memória do sistema no gerenciador de tarefas do Chrome, estarei "usando" um ou dois dos sites abaixo, enquanto as outras guias em segundo plano não são usadas.
É aí que o descarte de guias pode ajudar a reduzir o uso da memória.
Como descartar guias não usadas
O descarte de guias permite que o Chrome descarte automaticamente as guias que não são de seu interesse quando detectar que a memória do sistema está muito baixa. O que queremos dizer com "descarte"? Bem, uma guia descartada não vai a lugar nenhum. Nós o eliminamos, mas ele continua visível na barra de guias do Chrome. Se você voltar a uma guia que foi descartada, ela será atualizada quando clicada. O conteúdo do formulário, a posição de rolagem e assim por diante são salvos e restaurados da mesma forma que fariam durante a navegação nas guias para frente/para trás.
Também temos outro recurso que permite armazenar todos os recursos da guia localmente,
o que funciona bem com o descarte de guias quando você está off-line. Quando a guia é reativada, oferecemos a opção de recarregar a versão em cache que foi carregada anteriormente pela rede. Para ativar o recarregamento da página a partir do cache, teste outro experimento em chrome://flags/#show-saved-copy
.
Para testar o descarte da guia hoje, ative-a em
chrome://flags/#enable-tab-discarding
e reinicie o Chrome. É possível
controlar se ele é ativado ou desativado na mesma página do chrome://flags
do Chrome.
Uma nova página chamada chrome://discards
permite listar quais guias estão abertas
no momento e tentamos compartilhar algumas informações sobre o quanto elas são interessantes
para você, da mais para a menos.
Para testar o recurso, você pode realizar seu comportamento de navegação normal até que o sistema esteja em modo de pouca memória ou, como alternativa, acionar uma guia descartar de about:discards clicando em "Descartar guia agora". Isso descartará a última guia da lista. Você também pode descartar uma guia específica da lista clicando no botão "Descartar" correspondente. Uma guia descartada será exibida com um prefixo [Descartado].
Ao descartar a guia, as guias serão descartadas nesta ordem:
- Páginas internas, como página nova guia, favoritos etc.
- Guias selecionadas há muito tempo
- Guias selecionadas recentemente
- Apps em execução em uma janela
- Guias fixadas
- A guia selecionada
Ativamos o experimento de descarte de guias no Chrome Canary para Windows e Mac OS, com uma implementação do Linux em breve.
Inspiração: olá, ótimo suspensório
Se o descarte de guias parece familiar, é porque você provavelmente já encontrou extensões úteis do Chrome que oferecem uma versão um pouco mais simples dessa ideia, como a The Great Suspender. O objetivo da Great Suspensório é reduzir o consumo de memória e GPU do Chrome suspenso as guias após um período personalizado de inatividade.
Assim como o descarte de guias, a suspensão das guias pode ser cancelada quando você precisar interagir com elas de novo. A Great Suspender mantém o título e o favicon de cada guia, mostrando as guias suspensas em um estado esmaecido, facilitando a navegação de volta a elas a qualquer momento.
As guias em segundo plano que não estou usando ativamente foram suspensas, economizando na memória. No entanto, as guias que ainda estou usando ativamente (GitHub e YouTube) ainda estão funcionando normalmente.
Na verdade, tivemos uma ótima conversa com o autor da extensão Great Suspensório durante o desenvolvimento do descarte de guias, e ele está feliz por ver como estamos lidando de forma nativa com esse problema de maneiras mais eficientes do que uma extensão, como perder o estado das inatividades do usuário.
Futuras melhorias: o serializador de guias
O serializador de guias é um trabalho futuro que acreditamos que possa levar a melhorias significativas na nossa abordagem atual de descarte de guias. Ele usa o conteúdo de uma guia do Chrome e serializa o estado *atual* em um blob binário. É possível desserializar esse blob binário em uma guia posteriormente.
O serializador serializa quase tudo que o Chrome, o Blink e o V8 precisam preservar corretamente uma guia, algo que as extensões do Chrome que enfrentam esse problema historicamente não conseguiram fazer com facilidade. A serialização incluiria os suspeitos habituais: o DOM (com muitos WebGL e Canvas incluídos), o CSS e o estado da VM JavaScript V8.
Se você usa o Android ou o ChromeOS, talvez já saiba que, assim como a guia de descarte do experimento abordada nesta postagem, encerramos as guias em segundo plano de forma agressiva para garantir que o uso da memória seja baixo. O problema com a forma como tratamos isso era que sua guia perdia *todo* o estado.
Quando você mostrou interesse na guia novamente, teríamos que recarregá-la, e toda sua interação com ela seria perdida. O serializador de guias apenas aborda esse problema de uma forma que leva você de volta quase exatamente ao que era sem precisar voltar à rede. Esperamos compartilhar mais informações sobre esse trabalho em breve.
Experimente o descarte de guias e nos conte o que você achou
Gostaríamos de saber se esse recurso é útil para você e como ele pode ser aprimorado. Faça um teste, faça testes (especialmente se você coleciona guias) e deixe sua opinião nos comentários. :) Também agradeceremos se você registrar tíquetes sobre qualquer bug encontrado em crbug.com.