21 avis sur l'article : Google Chrome mangera 27% de RAM en moins… grâce à Microsoft

Google Chrome mangera 27% de RAM en moins… grâce à Microsoft

L’un des principaux défauts de Chrome, c’est sa gestion de la mémoire vive. Certains qualifient même le navigateur de Google de « mangeur de RAM ». Cela est sur le point de changer grâce aux améliorations apportées par Microsoft sur la version 2004 de Windows 10. Son propre navigateur Edge profite déjà d’une utilisation de la mémoire vive inférieure de 27%. Microsoft a introduit avec la ...

Lire l'article
  • Bien évidemment que le développeur est le premier responsable de la façon dont il gère la mémoire demandée par son appli. Pour autant la façon dont l'OS s'en occupe par derrière n'est pas du tout anodine et a un impact également sur l'occupation mémoire de l'appli : l'OS peut allouer plus que ce que lui demande l'appli (pour stocker des métadonnées, et/ou pour aligner les adresses, et/ou pour se simplifier la tâche en n'allouant jamais moins d'une page complète, etc...), il peut gérer plus ou moins bien la fragmentation de la mémoire virtuelle, etc...

    Il y a 20 ans on avait testé des séquences d'allocations/désallocations "pathologiques", qui montraient notamment que certains unix (à l'époque il y avait encore Solaris, AIX, HP-UX, IRIX...) géraient bien la fragmentation, alors que d'autres n'arrivaient plus à allouer de la mémoire alors qu'il en restait.

    Inversement si une appli gaspille de la mémoire parce que les développeurs ne se cassent pas la tête, l'OS n'a aucun moyen de "dire stop à cette anarchie" (et heureusement d'ailleurs).
    • C'est le programme qui va s'occuper de demander de la mémoire au système d'exploitation, mais le développeur n'a pas du tout la main sur la façon dont l'OS la gère par derrière. Je reprends mon exemple en le précisant : "Si par exemple l'OS réserve une page complète (64ko) au minimum quand l'appli demande l'allocation d'un tableau de 10 éléments (40 octets), le développeur n'y peut rien."

      Et oui, pratiquement tous les langages actuels permettent de faire de l'allocation dynamique, et donc ?
      • C’est tout à fait exact

        Deux programmes strictement identiques peuvent ne pas consommer la même quantité de RAM

        Cela pour deux raisons en particulier :
        1 : Certains programmeurs réservent plus qu’ils n’ont besoin et ne libèrent pas leurs différentes ressources quand elles ne sont plus nécessaires…
        2 : D’autres programmeurs n’utilisent que ce qu’ils ont besoin et libèrent leurs ressources inutiles pour ne pas saturer la ram…

        Donc oui, c’est bien au programmeur de gérer un minimum la mémoire et peu importe si Windows fait sa vaisselle en arrière-plan sur la mémoire physique…
        Si la mémoire vient à manquer, un troisième programme ne pourra réserver ce qu’il demande de toute façon si la RAM visible n'est pas disponible

        Les API de gestion de la ram existent et il faut les utiliser intelligemment

        Peut être que Google se fout royalement des autres programmes et pour faire tourner tous ses services dans son navigateur de façon fluide, Google s’accapare volontairement un maximum de RAM
        MS vient de dire stop à cette anarchie…
        • Sous 2004 ? Ben, lisez l'article...
          • Moi si. Il m'est déjà arrivé devoir fermer et relancer Chrome, voir même de le tuer parce que gelé, parce qu'il bouffait plus de 2 Go et même plus avec juste quelques onglets ouverts (moins de dix) Idem sous Linux. Ceci dit, c'est arrivé nettement moins souvent dans les dernières versions.

            Pour Firefox, c'est exact, c'est un goinfre aussi, mais j'ai eu moins tendance à avoir ce problème avec lui. Pour lui, vous devriez essayer ce que je propose dans un autre post ici.
            • > "C'est le programme qui va s'occuper de demander la mémoire au système d'exploitation"

              C'est donc bien un problème de Windows et l'amélioration est en lui. Les applis ne faisant que demander à Windows d'utiliser le nouveau mécanisme du système.
              • C'est le développeur du logiciel qui gère la consommation de mémoire.
                C'est pour ça qu'il existe des programmes qui ne bouffes que quelque mégaoctet alors d'autre en bouffe des centaines voir des giga. C'est le programme qui va s'occuper de demander la mémoire au système d'exploitation.
                Je sais qu'en C, on peut faire de l'allocation dynamique. Au lieu de réserver de la mémoire, on peut le faire dynamiquement.
                • Alors en fait, c'est grâce à une API qui a été implémenté dans la dernière version du SDK et c'est les développeurs qui doit l'implémenter pour optimiser la gestion de la ram.
                  Donc si les développeurs ne l'implémente pas, ça ne va rien changer.
                  • Ce que je peux noter. C'est que si je compare Edge à Chrome, je vois une bonne différence d'usage de la rame, sans que je ne puisse l'expliquer.
                    • > dans Chrome spécifiquement.

                      Ben non. L'amélioration est dans Windows et pour toutes apps, pas spécifiquement Chrome. Pour ne citer que l'article ici :

                      "En clair, cela permet aux applications de réduire leur consommation de RAM et ainsi de tourner plus efficacement sur les PC aux capacités mémoires plus limitées. A l’origine, cette amélioration ne concernait que les applications modernes (UWP). Cependant, les application Win32 profitent également de cette meilleure gestion de la mémoire depuis la version 2004 de Windows 10."

                      Aux applications de réduire... les applications win32 profitent..

                      "Microsoft a introduit avec la dernière version de Windows 10 (2004) une amélioration liée à l’allocation de la mémoire vive."

                      C'est bien une amélioration dans Windows qui permet "aux applications" de consommer moins en indiquant à Windows d'utiliser ce mécanisme.

                      Le bug a été ouvert pour Chrome juste pour qu'il puisse dire à Windows de le laisser utiliser le nouveau mécanisme d'allocation de mémoire.
                      • Le développeur ne gère pas la RAM en tant que telle, il voit un espace de mémoire virtuelle que l'OS mappe par derrière sur la RAM physique (ou sur le disque). Si par exemple l'OS réserve une page complète au minimum quand l'appli demande quelques octets, le développeur n'y peut rien (ou pas grand-chose).
                        • Je pense que le but ici est de souligner l'amélioration de la gestion de ram dans Chrome spécifiquement.
                          La gestion de la ram se fait par le développeur du logiciel en premier. Microsoft ajoute des API pour les aider dans ce sens.
                          • En fait le titre de l'article de l'article ne devrait pas être

                            "Google Chrome mangera 27% de RAM en moins… grâce à Microsoft"

                            mais

                            "Microsoft corrige enfin la gestion calamiteuse de la RAM dans Windows"
                            • Si, c'est certain (l'amélioration) Lit...
                              • Pas certain, car j'ai le même problème sur Mac... Moins sous Linux, mais c'est Chromnium qui tourne dessus et non Chrome "pure"
                                • Sur mon PC avec 2 GO de RAM, on peut pas dire que ça rame. Mais peut-être qu'il y aura une différence nette une fois cette amélioration appliquée.
                                  • Je n'ai jamais eu de soucis de ram avec Chrome. Par contre Firefox ce gouffre a fait saccader ma machine très souvent.
                                    Après c'est toujours bon à prendre comme amélioration.
                                    • L'amélioration en soi n'est pas dans Chrome, mais dans Windows. Le bug a été ouvert pour Chrome juste pour qu'il puisse dire à Windows de le laisser utiliser le nouveau mécanisme d'allocation de mémoire.

                                      À propos, pour Firefox vous devriez utiliser https://www.rizonesoft.com/downloads/firemin/
                                      • Top, hâte que ça arrive sur opera !
                                        • Et donc bientôt la suppression du rechargement automatique et insupportable des onglets (auto discardable) ?!! Y'en a marre de désactiver ça manuellement tous les matins:
                                          chrome://discards/
                                          • Et la gestion du temps de chargement en parallèle, elle reste identique ?
                                            Voir tous les commentaires (21)