Grâce à son moteur JavaScript V8, Google entend réduire la consommation de Chrome 55 en RAM de 40 % par rapport à la version précédente et de 50 % par rapport à la version 53. Comment Google en arrive à de tels résultats ? L’entreprise a articulé son action autour de deux axes d’optimisation : la réduction de la taille du JavaScript et la réduction de la zone mémoire.
Les ingénieurs rappellent qu’il y a un compromis inhérent entre le débit de collecte des miettes, la latence et la consommation de mémoire. Par exemple, la latence de la collecte des miettes (qui a un impact au niveau du thread de l’interface utilisateur) peut être réduite en utilisant plus de mémoire pour éviter de fréquents appels de collecte des miettes. Pour les appareils mobiles à faible mémoire, à savoir les appareils en dessous de 512 Mo de RAM, donner la priorité à la latence et au débit sur la consommation de mémoire peut entraîner des plantages mémoire et suspendre des onglets sur Android.
« Pour mieux équilibrer les bons compromis sur ces appareils mobiles à faible mémoire, nous avons introduit un mode de réduction de mémoire spécial qui règle plusieurs heuristiques de collecte des miettes afin de réduire l'utilisation de mémoire des miettes collectées ». Pour ce faire, les ingénieurs passent par trois phases :
- à la fin d’une collecte de miettes, le moteur V8 détermine quand la prochaine collecte aura lieu. Dans ce mode, V8 va utiliser moins de mémoire étant donné que la collecte des miettes sera plus fréquente ;
- en outre, cette estimation est traitée comme une limite stricte, ce qui aura pour conséquence de forcer la phase de marquage incrémental non achevée à se finaliser durant la pause de la collecte principale de miettes. En dehors de ce mode, c’est à dire dans des conditions normales, cette phase peut excéder ce temps et déclencher la pause de la collecte principale de miettes uniquement quand elle est achevée ;
- la fragmentation de la mémoire est encore plus réduite en exécutant des compressions de mémoire agressives.
Les ingénieurs ont testé cette méthode d’optimisation sur une série de sites et ont observé avec la version 53 et la version 55 de Chrome une réduction moyenne de la consommation de mémoire de l’ordre de 50 %.
La plus grande portion de la mémoire est allouée via des régions de la mémoire appelées zones. Les ingénieurs expliquent que l’une des améliorations majeures qui accompagne Chrome 55 provient de la capacité à réduire la consommation de la mémoire durant la décomposition analytique en arrière-plan. « La décomposition analytique en arrière-plan permet à V8 d’analyser des scripts tandis que les pages sont chargées. L’outil de visualisation de mémoire nous a aidé à découvrir que le parser en arrière-plan gardait une zone entière active bien après la compilation du code. En libérant immédiatement la zone après la compilation, nous avons réduit le temps de vie des zones de façon significative, ce qui s’est traduit par la réduction de la moyenne ainsi que du pic d’utilisation de la mémoire ». Le graphique ci-dessous montre des améliorations au niveau du pic d’utilisation de la zone mémoire depuis la version 54 qui va jusqu’à 40 % en moyenne sur les sites web mesurés.
Source : Google
Voir aussi :
Google reconnait que Chrome sur Mac utilise beaucoup la batterie et présente les optimisations qui seront apportées pour réduire sa consommation