Facebook liberou o código fonte do memlab

Para alegria dos fãs do código aberto, o Facebook liberou o código fonte do memlab. Confira os detalhes dessa novidade.

Sim. Recentemente, surgiram notícias de que o Facebook tomou a decisão de liberar o código-fonte do kit de ferramentas memlab, projetado para analisar partes do estado de memória alocado 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.

Facebook liberou o código fonte do memlab

Facebook liberou o código fonte do memlab
Facebook liberou o código fonte do memlab

MemLab é uma estrutura para encontrar vazamentos de memória JavaScript. Esse framework 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 de vazamentos de memória ao executar o código JavaScript podem ser a presença de referências ocultas a objetos, portanto, o coletor de lixo não pode liberar a memória ocupada pelo objeto, cache de valores irracional ou implementação de infinito de deslocamento sem remover elementos 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.

Por fim, se você estiver interessado, saiba que o código do Memlab é de código aberto sob a licença do MIT e você pode aprender mais sobre ele no seguinte endereço.

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.