4 votes

Pourquoi usedJSHeapSize augmente-t-il toujours lorsque nous ouvrons Chrome avec "--enable-precise-memory-info" alors que je n'ai rien fait dans la page ?

J'expérimente les fermetures et le garbage collection en javascript. Avoir des informations sur la mémoire est vraiment pratique. J'essaie d'utiliser window.performance.memory.usedJSHeapSize mais je n'en ai aucune idée :

  1. Pourquoi la sortie continue-t-elle d'augmenter alors que je ne fais rien dans la page ?
  2. Pourquoi, lorsque je rafraîchis la page plusieurs fois, la sortie initiale est légèrement différente ? 3xxxxxx -> rafraîchir -> 4xxxxxx -> rafraîchir -> 6xxxxxx -> 3xxxxxx - Vous voyez le schéma ? Cela signifie-t-il que le ramasseur de déchets est déclenché - disons - une fois tous les 3 rafraîchissements ? Mes soupçons ont été confirmés en ajoutant gc() en charge.

Si vous voulez jouer avec mon outil éducatif simple, le code est le suivant sur mon github .

1voto

zerkms Points 105994

Pourquoi la sortie continue-t-elle d'augmenter alors que je ne fais rien dans la page ?

Si vous comparez les instantanés du tas à l'aide des "Instantanés du tas" ou si vous capturez les "Lignes de temps d'allocation" à partir de l'onglet webdev "Profils", vous verrez que pendant setTimeout n'appelle qu'un objet in de la classe MemoryInfo est alloué.

Et alors il devient immédiatement évident - que le var memory = window.performance.memory; déclenche un getter qui vous renvoie à chaque fois un nouvel objet, qui doit être alloué. Après le retour de la callback, c'est un candidat pour la collecte.

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X