Comment obtenir la taille et le nombre d'objets javascript dans la mémoire du navigateur

Je sais que la plupart d'entre vous me pointeront sur l' chrome profiler heap snapshot , mais sur la page vide (no js no css just html> body), cela montre une taille de 8mb et 12 à 30 000 objets dépend de son humeur, donc il est totalement inutile Outil pour cette tâche, et je pense que ce profileur de tas a sa propre opinion humble sur les données, il montre plutôt que le fait, même si le reste des outils chrome dev sont géniaux.

Fondamentalement, mon application de page 1 de backbone continue de croître en mémoire, même si je fais toute la danse de collecte des ordures, JSON.stringify(Obj).length lance une action not secure sur la plupart des objets, comment puis-je effectuer un suivi de ces zombies plus facilement que les essais et les erreurs.

Vous dissez les outils de développement Chrome, mais pour autant que je sache, ils sont les meilleurs que vous avez. Il suffit de les utiliser judicieusement.

Dites que vous voulez tester si certaines actions de votre application perdurent de la mémoire. Ce pourrait être le rendu d'une vue ou l'extraction de nouvelles données. Appelons ceci l' Action .

Afin de savoir combien de mémoire est réservée, et combien est retenue, d'abord, vous devez obtenir une base de données mesurable et éliminer le bruit. Vous avez besoin de trois étapes pour réaliser ces choses.

  1. Réchauffer

    Commencez votre application (naviguez vers votre site web). Effectuer une Action . Prenez un instantané de tas. Cet instantané est rejeté, mais il fonctionnera le GC et vous fournira une ardoise propre. Le réchauffement garantit également que vous ne recevez pas de fuzz sur vos données mesurables: évaluation de script, chargement initial des ressources asynchrones, etc.

  2. Ligne de base

    Effectuer l' Action trois fois. Prenez un instantané de tas. C'est la ligne de base à laquelle nous allons comparer notre réserve de mémoire et notre rétention. Nous faisons l' Action trois fois pour obtenir une moyenne raisonnable en cas de faible variabilité dans le chemin d'exécution. Assurez-vous d'essayer de répéter l' Action exactement de la même manière à chaque fois.

  3. La mesure

    Effectuer l' Action trois fois. Prenez un instantané de tas.

Maintenant, vous aurez trois instantanés. Le premier sera rejeté, mais ce qui est intéressant pour nous, c'est le Résumé des objets attribués entre les instantanés 2 et 3 , ainsi que la comparaison delta de Snapshot 3 à Snapshot 2. Vous pouvez trouver ces vues depuis la barre d'état / bas des Profils vue.

Objets attribués entre les instantanés 2 et 3

Les données que vous voyez entre les calques de ligne de base et de mesure sont le véritable profil de mémoire pour Action . Ensuite, il suffit de savoir comment interpréter correctement les données. Pour cela, je recommande la documentation de Google sur le profileur .

Je ne pense pas qu'il existe un meilleur outil ou un moyen en ce moment. Si c'est le cas, j'aimerais entendre parler de cela.