Marco de código aberto de Facebook para detectar fugas de memoria en JavaScript

Facebook (prohibido na Federación Rusa) abriu o código fonte do kit de ferramentas memlab, deseñado para analizar partes do estado da memoria asignada de forma dinámica (heap), determinar estratexias para optimizar a xestión da memoria e identificar fugas de memoria que se producen ao executar código en JavaScript. O código está aberto baixo a licenza MIT.

O marco foi creado para analizar os motivos do alto consumo de memoria cando se traballa con sitios web e aplicacións web. Por exemplo, o memlab utilizouse para analizar o consumo de memoria cando se utilizaba unha nova versión do sitio web Facebook.com, o que permitiu identificar filtracións que provocaron que o navegador fallase no lado do cliente debido ao esgotamento da memoria libre.

As causas das fugas de memoria ao executar código JavaScript poden ser referencias a obxectos ocultos que impiden que o colector de lixo libere a memoria ocupada polo obxecto, o almacenamento en caché de valores imprudente ou a implementación de desprazamento infinito sen desaloxar elementos da lista antiga. Por exemplo, no seguinte código en Chrome, prodúcese unha fuga de memoria debido ao obxecto "obj", a pesar de que se lle asigna o valor nulo, xa que Chrome almacena referencias internas aos obxectos de saída para a súa posterior inspección na consola web. . var obj = {}; console.log(obj); obj = nulo;

Características principais de memlab:

  • Detección de fugas de memoria no navegador. Memlab permítelle comparar automaticamente instantáneas de estado da memoria dinámica, detectar fugas de memoria e agregar os resultados.
  • Unha API orientada a obxectos para a iteración do montón, que che permite implementar os teus propios algoritmos de detección de fugas e implementar sistemas para analizar instantáneas do estado do montón. A análise de pilas é compatible con navegadores baseados no motor Chromium, así como para as plataformas Node.js, Electron e Hermes.
  • Interface de liña de comandos e API para atopar oportunidades para optimizar o uso da memoria.
  • Un sistema de afirmacións para Node.js que che permite crear probas unitarias e executar programas baseados en Node.js para crear partes do teu propio estado, probar a túa memoria ou escribir comprobacións de afirmacións estendidas.

Fonte: opennet.ru

Engadir un comentario