Réduire l'encombrement de la mémoire de Chrome est l'une des priorités majeures de l'équipe cette année. Nous avons déjà constaté une réduction allant jusqu'à 45% de l'utilisation de la mémoire de Gmail grâce aux améliorations apportées au processus de récupération de mémoire de V8, mais ce n'est que le début. L'une de nos prochaines expériences sur l'utilisation de la mémoire est destinée aux collectionneurs d'onglets (comme moi). Cette opération est appelée suppression d'onglet.
La suppression d'onglets est disponible en tant que fonctionnalité expérimentale dans Chrome 46 et versions ultérieures.
Contexte
Notre processus de moteur de rendu prend généralement environ 50 Mo par onglet ouvert, même si la plupart des utilisateurs n'utilisent qu'un seul onglet à la fois. Si vous avez 10 onglets ouverts, au moins 450 Mo de mémoire sont utilisés uniquement pour conserver l'état des onglets en arrière-plan. Cela peut devenir un peu pénible avec le temps.
L'un de nos objectifs est de réduire la mémoire utilisée sur les onglets que vous n'utilisez pas réellement. Si j'observe les onglets qui consomment ma mémoire système dans le gestionnaire de tâches de Chrome, je n 'utilise en fait qu'un ou deux des sites ci-dessous, tandis que les autres onglets en arrière-plan ne sont pas utilisés.
C'est là que la suppression des onglets peut contribuer à réduire l'utilisation de la mémoire.
Supprimer les onglets inutilisés
La suppression d'onglets permet à Chrome de supprimer automatiquement les onglets qui ne vous intéressent pas lorsqu'il détecte que la mémoire système est assez faible. Qu'entend-on par "rejet" ? Un onglet supprimé ne sert à rien. Nous le supprimons, mais il est toujours visible dans la barre d'onglets de Chrome. Si vous revenez à un onglet supprimé, il sera actualisé lorsque vous cliquerez dessus. Le contenu du formulaire, la position de défilement, etc. sont enregistrés et restaurés de la même manière que lors de la navigation avant/arrière par onglet.
Nous avons également une autre fonctionnalité qui permet de mettre en cache toutes les ressources d'onglets localement, ce qui fonctionne très bien avec la suppression des onglets lorsque vous êtes hors connexion. Lorsque l'onglet est réactivé, vous pouvez actualiser la version mise en cache précédemment chargée sur le réseau. Pour activer l'actualisation des pages à partir du cache, vous pouvez essayer un autre test sous chrome://flags/#show-saved-copy
.
Vous pouvez essayer la suppression d'onglets aujourd'hui en l'activant via chrome://flags/#enable-tab-discarding
, puis en relançant Chrome. Vous pouvez contrôler leur activation ou désactivation depuis la même page chrome://flags
Chrome.
Une nouvelle page appelée chrome://discards
vous permet de lister les onglets actuellement ouverts. Nous essayons de vous donner un aperçu de leur intérêt (du moins au moins) selon nous.
Pour tester cette fonctionnalité, vous pouvez soit appliquer votre comportement de navigation normal jusqu'à ce que votre système soit en mode de mémoire insuffisante, soit déclencher la suppression d'un onglet d'about:discards en cliquant sur "Supprimer l'onglet maintenant". Cela supprimera le dernier onglet de la liste. Vous pouvez également supprimer un onglet particulier de la liste en cliquant sur le bouton "Supprimer" correspondant. Un onglet supprimé s'affiche avec le préfixe [Removeed].
La suppression d'onglets supprime les onglets dans cet ordre:
- Pages internes telles que la page "Nouvel onglet", les favoris, etc.
- Onglets sélectionnés il y a longtemps
- Onglets récemment sélectionnés
- Applications exécutées dans une fenêtre
- Onglets épinglés
- Onglet sélectionné
Nous avons activé le test de suppression d'onglets dans Chrome Canary pour Windows et Mac OS, et une implémentation Linux sera bientôt disponible.
Idées: salut, bonne blouse
Si la suppression d'onglets vous semble familière, c'est parce que vous avez probablement rencontré des extensions Chrome utiles qui vous donnent une version un peu plus simple de cette idée, telles que The Great Suspender. Il vise à réduire l'encombrement de la mémoire et du GPU de Chrome en suspendant des onglets après une période d'inactivité personnalisée.
Comme pour la suppression des onglets, vous pouvez réactiver les onglets lorsque vous devez de nouveau interagir avec eux. Great Suspender conserve le titre et le favicon de chaque onglet, et affiche les onglets suspendus en estompé, ce qui permet d'y revenir facilement à tout moment.
Les onglets en arrière-plan que je n'utilise pas activement ont été suspendus, ce qui permet d'économiser de la mémoire. Toutefois, les onglets que j'utilise encore activement (GitHub et YouTube) continuent de fonctionner normalement.
Nous avons beaucoup discuté avec l'auteur de l'extension Great Suspender lors du développement de la suppression des onglets, et il est heureux de voir que nous nous sommes attaqués à ce problème de manière plus efficace qu'une extension, par exemple la perte de l'état de vos absences d'action de l'utilisateur.
Améliorations futures: sérialiseur d'onglets
Nous pensons que le sérialiseur d'onglets va entraîner des améliorations significatives de notre approche actuelle concernant la suppression d'onglets. Il prend le contenu d'un onglet Chrome et sérialise son état *actuel* dans un blob binaire. Ce blob binaire peut ensuite être désérialisé dans un onglet.
Le sérialiseur sérialisait presque tout ce dont Chrome, Blink et V8 ont besoin pour conserver correctement un onglet (ce que les extensions Chrome qui remédiaient habituellement à ce problème n'ont jamais été faciles à réaliser). La sérialisation inclura les éléments suspects habituels: le DOM (avec beaucoup de WebGL et de Canvas), CSS et l'état de la VM JavaScript V8.
Si vous utilisez Android ou ChromeOS, vous savez peut-être que nous supprimons les onglets en arrière-plan de manière agressive (comme pour l'expérience de suppression d'onglets abordées dans cet article) afin de limiter l'utilisation de la mémoire. Le problème dans la façon dont nous abordons ce problème était que votre onglet perdrait *tout* son état.
Si vous montrez à nouveau de l'intérêt pour l'onglet, nous devions l'actualiser, et toutes vos interactions avec celui-ci seraient perdues. Le sérialiseur d'onglets aborde ce problème d'une manière qui vous permet de revenir presque exactement à ce que vous vouliez sans avoir à revenir au réseau. Nous sommes impatients de partager plus d’informations sur ce travail à une date ultérieure.
Essayez la suppression des onglets et dites-nous ce que vous en pensez
Nous aimerions savoir si cette fonctionnalité vous serait utile et comment nous pourrions l'améliorer. Essayez-la, amusez-vous et donnez-nous votre avis dans les commentaires. :) Nous vous serions également reconnaissants de signaler les bugs que vous rencontrez sur crbug.com.