Facebook liberou o código fonte do memlab

facebook-memlab

MemLab é uma estrutura para encontrar vazamentos de memória JavaScript

Recentemente, a notícia de que Facebook tomou a decisão de liberar o código-fonte do jogo de ferramentas laboratório de memóriaqual é projetado para analisar partes do estado da memória alocados dinamicamente (heap), determinar uma estratégia para otimizar o trabalho com memória e detectar vazamentos de memória que ocorrem quando executando o código JavaScript. 

A armação foi criado para analisar as causas do alto consumo de memória ao trabalhar com sites e aplicativos da web. Por exemplo, o memlab foi usado para analisar o consumo de memória ao usar uma nova versão do site Facebook.com, que revelou vazamentos que causaram uma falha no navegador do lado do cliente devido ao esgotamento da memória livre.

As pessoas que usam nossos aplicativos da Web geralmente percebem problemas de desempenho e correções funcionais imediatamente. A perda de memória, no entanto, é uma história diferente. Não é imediatamente perceptível, porque consome um pedaço de memória por vez, afetando toda a sessão da Web e tornando as interações subsequentes mais lentas e menos responsivas.

Para ajudar nossos desenvolvedores a resolver isso, criamos o MemLab , uma estrutura de teste de memória JavaScript que automatiza a detecção de vazamentos e facilita a localização de vazamentos de memória. Usamos o MemLab no Meta para conter com sucesso o crescimento insustentável de memória e identificar vazamentos de memória e oportunidades de otimização de memória em nossos produtos e infraestrutura.

O alto uso de memória tem um impacto estatisticamente significativo e negativo no carregamento da página e no desempenho da interação (quanto tempo leva para carregar uma página ou realizar uma interação)
Métricas de engajamento do usuário (usuários ativos, tempo gasto no site, número de atividades realizadas)

As causas dos vazamentos de memória ao executar o código JavaScript pode ser a presença de referências de objetos ocultosPortanto coletor de lixo não pode liberar memória ocupado pelo objeto, armazenamento em cache irracional de valores ou implementação de rolagem infinita sem despejar itens de lista antigos.

Por exemplo, no código do Chrome a seguir, o vazamento de memória ocorre devido ao objeto "obj", mesmo que esteja definido como nulo, porque o Chrome mantém referências internas aos objetos renderizados para permitir que sejam inspecionados posteriormente no console da web.

O funcionamento básico do Memlab, É o seguinte:

  1. Ele faz a detecção de vazamento de memória no navegador primeiro, o Memlab permite que você compare automaticamente instantâneos de memória dinâmica, detecte vazamentos de memória e agregue resultados.
  2. Uma API de travessia de heap orientada a objetos que permite implementar seus próprios algoritmos de detecção de vazamentos e implementar sistemas para analisar instantâneos de heap. A análise de heap é compatível com navegadores baseados no mecanismo Chromium, bem como para as plataformas Node.js, Electron e Hermes.
  3. Interface de linha de comando e API para encontrar oportunidades para otimizar o uso de memória.
  4. Um sistema de asserção para Node.js que permite criar testes de unidade e executar programas baseados em Node.js para dividir seu próprio estado, testar sua memória ou escrever asserções avançadas.
  5. Agrupamento de rastreamento de retenção, o MemLab agrupa todos os rastreamentos de retenção e exibe um rastreamento para cada grupo de objetos filtrados que compartilham rastreamentos de retenção semelhantes. O rastreamento também inclui informações de depuração, como nós dominantes e tamanhos retidos.
  6. Ao relatar vazamentos, o MemLab pode ser executado em intervalos regulares ao longo do dia para obter um sinal contínuo sobre as regressões de memória. Quaisquer novas regressões são adicionadas a um painel interno, onde os rastreamentos de retenção agrupados de todos os vazamentos de memória detectados são coletados e classificados. Os desenvolvedores podem clicar e visualizar as propriedades do objeto no rastreamento de espera para cada vazamento de memória.

Finalmente se você está interessado, você deve saber que o código Memlab é de código aberto sob a licença do MIT e você pode aprender mais sobre isso no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.