Facebook lanzou o código fonte de memlab

Memlab de Facebook

MemLab é un marco para atopar fugas de memoria JavaScript

Recentemente saíu a noticia Facebook tomou a decisión de publicar o código fonte do kit de ferramentas memlabque é deseñado para analizar partes do estado da memoria asignado dinámicamente (montón), determinar unha estratexia para optimizar o traballo coa memoria e detectar fugas de memoria que se producen cando executando código JavaScript. 

O cadro foi creado para analizar as causas 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 Facebook.com, que revelou filtracións que provocaron un fallo do navegador no cliente debido ao esgotamento da memoria libre.

As persoas que usan as nosas aplicacións web adoitan notar problemas de rendemento e correccións funcionais de inmediato. Unha perda de memoria, con todo, é unha historia diferente. Non se nota inmediatamente, porque consome un anaco de memoria á vez, afectando a toda a sesión web e facendo que as interaccións posteriores sexan máis lentas e menos sensibles.

Para axudar aos nosos desenvolvedores a solucionar isto, creamos MemLab , un marco de proba de memoria JavaScript que automatiza a detección de fugas e facilita a localización de fugas de memoria. Usamos MemLab en Meta para conter con éxito o crecemento insostible da memoria e identificar fugas de memoria e oportunidades de optimización da memoria nos nosos produtos e infraestrutura.

O uso elevado de memoria ten un impacto estatisticamente significativo e negativo na carga da páxina e no rendemento da interacción (canto tempo leva cargar unha páxina ou realizar unha interacción)
Métricas de participación do usuario (usuarios activos, tempo de permanencia no sitio, número de actividades realizadas)

As causas das fugas de memoria ao executar código JavaScript pode ser a presenza de referencias de obxectos ocultos, Así que o colector de lixo non pode liberar memoria ocupado polo obxecto, almacenamento non razoable de valores ou implementación de desprazamento infinito sen desaloxar elementos da lista antiga.

Por exemplo, no seguinte código de Chrome, a fuga de memoria prodúcese debido ao obxecto "obj", aínda que estea definido como nulo, porque Chrome mantén referencias internas aos obxectos renderizados para permitir que se inspeccionen máis tarde na consola web.

O funcionamento básico de Memlab, é o seguinte

  1. Primeiro fai a detección de fugas de memoria no navegador, Memlab permítelle comparar automaticamente instantáneas de memoria dinámica, detectar fugas de memoria e agregar resultados.
  2. Unha API de atravesamento do montón orientada a obxectos que che permite implementar os teus propios algoritmos de detección de fugas e implementar sistemas para analizar instantáneas 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.
  3. Interface de liña de comandos e API para atopar oportunidades para optimizar o uso da memoria.
  4. Un sistema de asercións para Node.js que che permite crear probas unitarias e executar programas baseados en Node.js para dividir o teu propio estado, probar a túa memoria ou escribir asercións avanzadas.
  5. Agrupación de trazas de retención, MemLab agrupa todas as trazas de retención e mostra unha traza para cada grupo de obxectos filtrados que comparten trazos de retención similares. O rastrexo tamén inclúe información de depuración, como nodos dominantes e tamaños conservados.
  6. Ao informar de fugas, MemLab pódese executar a intervalos regulares ao longo do día para obter un sinal continuo sobre as regresións da memoria. Calquera nova regresión engádese a un panel interno, onde se recollen e clasifican os trazos de retención agrupados de todas as fugas de memoria detectadas. A continuación, os desenvolvedores poden facer clic e ver as propiedades do obxecto na traza de retención para cada fuga de memoria.

Finalmente se estás interesado, debes saber que o código de Memlab é de código aberto baixo a licenza MIT e podes aprender máis sobre el Na seguinte ligazón.


O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

Sexa o primeiro en opinar sobre

Deixa o teu comentario

Enderezo de correo electrónico non será publicado.

*

*

  1. Responsable dos datos: Miguel Ángel Gatón
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.