Facebook a publié le code source de memlab

facebook-memlab

MemLab est un framework pour trouver les fuites de mémoire JavaScript

Récemment, la nouvelle a annoncé que Facebook a pris la décision de publier le code source de la trousse à outils laboratoire mémoirelequel est conçu pour analyser des parties de l'état de la mémoire dynamiquement alloué (tas), déterminer une stratégie pour optimiser le travail avec la mémoire et détecter les fuites de mémoire qui se produisent lorsque l'exécution de code JavaScript. 

Le cadre a été créé pour analyser les causes d'une forte consommation de mémoire lorsque vous travaillez avec des sites Web et des applications Web. Par exemple, memlab a été utilisé pour analyser la consommation de mémoire lors de l'utilisation d'une nouvelle version du site Facebook.com, qui a révélé des fuites qui ont provoqué un plantage du navigateur côté client en raison de l'épuisement de la mémoire libre.

Les personnes qui utilisent nos applications Web remarqueront souvent immédiatement des problèmes de performances et des correctifs fonctionnels. Une perte de mémoire, cependant, est une autre histoire. Ce n'est pas immédiatement perceptible, car il consomme un morceau de mémoire à la fois, affectant l'ensemble de la session Web et rendant les interactions ultérieures plus lentes et moins réactives.

Pour aider nos développeurs à résoudre ce problème, nous avons créé MemLab , un framework de test de mémoire JavaScript qui automatise la détection des fuites et facilite la localisation des fuites de mémoire. Nous avons utilisé MemLab sur Meta pour contenir avec succès la croissance insoutenable de la mémoire et identifier les fuites de mémoire et les opportunités d'optimisation de la mémoire dans nos produits et notre infrastructure.

Une utilisation élevée de la mémoire a un impact statistiquement significatif et négatif sur le chargement de la page et les performances d'interaction (combien de temps il faut pour charger une page ou effectuer une interaction)
Métriques d'engagement des utilisateurs (utilisateurs actifs, temps passé sur le site, nombre d'activités effectuées)

Les causes des fuites de mémoire lors de l'exécution de code JavaScript peut être la présence de références d'objets cachésDonc le ramasse-miettes ne peut pas libérer de mémoire occupé par l'objet, une mise en cache déraisonnable des valeurs ou la mise en œuvre d'un défilement infini sans évincer les anciens éléments de la liste.

Par exemple, dans le code Chrome suivant, la fuite de mémoire se produit à cause de l'objet "obj", même s'il est défini sur null, car Chrome conserve les références internes aux objets rendus pour leur permettre d'être inspectés ultérieurement dans la console Web.

Le fonctionnement de base de Memlab, C'est le suivant:

  1. Il effectue d'abord la détection des fuites de mémoire dans le navigateur, Memlab vous permet de comparer automatiquement les instantanés de mémoire dynamiques, de détecter les fuites de mémoire et d'agréger les résultats.
  2. Une API de traversée de tas orientée objet qui vous permet d'implémenter vos propres algorithmes de détection de fuites et de mettre en œuvre des systèmes d'analyse des instantanés de tas. L'analyse de tas est prise en charge pour les navigateurs basés sur le moteur Chromium, ainsi que pour les plates-formes Node.js, Electron et Hermes.
  3. Interface de ligne de commande et API pour trouver des opportunités d'optimiser l'utilisation de la mémoire.
  4. Un système d'assertion pour Node.js qui vous permet de créer des tests unitaires et d'exécuter des programmes basés sur Node.js pour diviser votre propre état, tester votre mémoire ou écrire des assertions avancées.
  5. Regroupement des traces de rétention, MemLab regroupe toutes les traces de rétention et affiche une trace pour chaque groupe d'objets filtrés qui partagent des traces de rétention similaires. La trace inclut également des informations de débogage telles que les nœuds dominants et les tailles retenues.
  6. En signalant les fuites, MemLab peut être exécuté à intervalles réguliers tout au long de la journée pour obtenir un signal continu sur les régressions de mémoire. Toutes les nouvelles régressions sont ajoutées à un tableau de bord interne, où les traces de rétention regroupées de toutes les fuites de mémoire détectées sont collectées et classées. Les développeurs peuvent ensuite cliquer et afficher les propriétés de l'objet dans la trace de maintien pour chaque fuite de mémoire.

Enfin si tu es intéressé, vous devez savoir que le code Memlab est open source sous licence MIT et vous pouvez en savoir plus à ce sujet dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.