Framework open source Facebook pour détecter les fuites de mémoire en JavaScript

Facebook (interdit en Fédération de Russie) a ouvert le code source de la boîte à outils memlab, conçue pour analyser des tranches de l'état de la mémoire allouée dynamiquement (heap), déterminer des stratégies d'optimisation de la gestion de la mémoire et identifier les fuites de mémoire qui se produisent lors de l'exécution de code dans JavaScript. Le code est ouvert sous licence MIT.

Le framework a été créé pour analyser les raisons d'une consommation élevée de mémoire lors de l'utilisation de sites Web et d'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, ce qui a permis d'identifier des fuites ayant conduit au crash du navigateur côté client en raison de l'épuisement de la mémoire libre.

Les causes des fuites de mémoire lors de l'exécution de code JavaScript peuvent être des références d'objet cachées qui empêchent le ramasse-miettes de libérer la mémoire occupée par l'objet, une mise en cache imprudente des valeurs ou la mise en œuvre d'un défilement infini sans expulser les anciens éléments de la liste. Par exemple, dans le code ci-dessous dans Chrome, une fuite de mémoire se produit en raison de l'objet « obj », malgré le fait que la valeur null lui soit attribuée, car Chrome stocke les références internes aux objets de sortie pour une inspection ultérieure dans la console Web. . var obj = {}; console.log(obj); obj = nul ;

Principales fonctionnalités de memlab :

  • Détection des fuites de mémoire dans le navigateur. Memlab vous permet de comparer automatiquement des instantanés dynamiques de l'état de la mémoire, de détecter les fuites de mémoire et d'agréger les résultats.
  • Une API orientée objet pour l'itération du tas, vous permettant 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 l'état du tas. L'analyse du tas est prise en charge pour les navigateurs basés sur le moteur Chromium, ainsi que pour les plateformes Node.js, Electron et Hermes.
  • Interface de ligne de commande et API pour trouver des opportunités d'optimisation de l'utilisation de la mémoire.
  • 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 créer des tranches de votre propre état, tester votre mémoire ou écrire des vérifications d'assertion étendues.

Source: opennet.ru

Ajouter un commentaire