Reduzir o uso de memória do Chrome é uma das principais prioridades da equipe este ano. Já notamos uma redução de até 45% no uso de memória do Gmail graças a melhorias no processo de coleta de lixo do V8, mas ainda estamos no começo. Um dos nossos próximos experimentos no uso da memória é voltado para acumuladores de guias (como eu). Isso é chamado de descartamento de guias.

A eliminação de guias está disponível como um experimento no Chrome 46 e versões mais recentes.
Contexto
Para cada guia aberta, nosso processo de renderização geralmente consome cerca de 50 MB por guia, mesmo que a maioria das pessoas use apenas uma guia por vez. Se você tiver 10 guias abertas, pelo menos 450 MB de memória serão usados apenas para manter o estado da guia em segundo plano. Isso pode ficar um pouco difícil com o tempo.

Um dos nossos objetivos é reduzir a memória usada em guias que você não está usando. Se eu verificar quais guias estão consumindo a memória do sistema no Gerenciador de tarefas do Chrome, vou "usar" apenas 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 de memória.
Como descartar guias não usadas
O descarte de guias permite que o Chrome descarte automaticamente guias que não são de grande interesse para você quando detecta que a memória do sistema está acabando. O que significa descartar? Uma guia descartada não vai a lugar nenhum. Ele é removido, mas ainda aparece na barra de guias do Chrome. Se você voltar para uma guia descartada, ela será recarregada quando você clicar nela. O conteúdo do formulário, a posição de rolagem e assim por diante são salvos e restaurados da mesma forma que seriam durante a navegação para frente/trás da guia.
Também temos outro novo recurso que permite armazenar em cache todos os recursos de guias localmente,
o que funciona bem com a exclusão de guias quando você está off-line. Quando a guia é
reativada, você pode recarregar a versão em cache que foi
carregada anteriormente pela rede. Para ativar a atualização da página no cache, tente
outro experimento em chrome://flags/#show-saved-copy
.
Você pode testar o descarte de guias hoje mesmo ativando essa opção em
chrome://flags/#enable-tab-discarding
e reiniciando o Chrome. É possível
controlar se ele está ativado ou desativado na mesma página chrome://flags
do Chrome.


Uma nova página chamada chrome://discards
permite listar as guias que estão abertas
e tentamos compartilhar alguns insights sobre o quanto elas são interessantes
para você, da mais para a menos.

Para testar o recurso, realize o comportamento de navegação normal até que o sistema esteja no modo de pouca memória ou, como alternativa, acione um descarte de guia em about:discards clicando em "Discard tab now". Isso vai 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 vai aparecer com um prefixo [Discarded].

O descarte de guias é feito nesta ordem:
- Páginas internas, como a 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 para Linux em breve.

Inspiração: olá, ótimo suporte
Se o descarte de guias parece familiar, é porque você provavelmente encontrou extensões úteis do Chrome que oferecem uma versão um pouco mais simples dessa ideia, como o The Great Suspender. O Great Suspender tem como objetivo reduzir a pegada de memória e GPU do Chrome suspendendo guias após um período personalizado de inatividade.

Assim como no descarte de guias, as guias podem ser suspensas quando você precisar interagir com elas novamente. O Great Suspender mantém o título e o ícone 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 memória. No entanto, as guias que ainda estou usando (GitHub e YouTube) estão funcionando normalmente.
Conversamos com o autor da extensão Great Suspender enquanto desenvolvíamos o descarte de guias. Ele ficou feliz em saber que estamos resolvendo esse problema de forma nativa de maneira mais eficiente do que uma extensão, como perder o estado de inação do usuário.
Futuras melhorias: o serializador de guias
O serializador de guias é um trabalho futuro que pode levar a melhorias significativas na nossa abordagem atual de descarte de guias. Ele pega o conteúdo de uma guia do Chrome e serializa o estado *atual* dela em um blob binário. Esse blob binário pode ser desserializado mais tarde em uma guia.
O serializador serializa quase tudo o que o Chrome, o Blink e o V8 precisam para preservar corretamente uma guia (algo que as extensões do Chrome que lidam com esse problema historicamente não conseguiram alcançar com facilidade). A serialização incluiria os suspeitos de sempre: o DOM (com muitos WebGL e Canvas incluídos), CSS e o estado da VM JavaScript V8.

Se você usa o Android ou o ChromeOS, talvez saiba que, de forma semelhante ao experimento de descarte de guias abordado nesta postagem, removemos as guias em segundo plano de forma agressiva para garantir que o uso de memória seja baixo. O problema com a forma como abordamos isso era que a guia perdia *todo* o estado.
Quando você mostrasse interesse na guia novamente, teríamos que recarregá-la e toda sua interação com ela seria perdida. O serializador de guias aborda esse problema de uma maneira que você volte quase exatamente ao que estava sem precisar voltar à rede. Em breve, vamos compartilhar mais informações sobre esse trabalho.
Teste a exclusão de guias e nos conte o que achou
Gostaríamos de saber se esse recurso é útil para você e como ele pode ser melhorado. Teste e brinque com ele (especialmente se você é um acumulador de guias!) e deixe sua opinião nos comentários. :) Também agradecemos se você enviar solicitações de suporte para bugs encontrados em crbug.com.