Estrutura de código aberto do Facebook para detectar vazamentos de memória em JavaScript

O Facebook (banido na Federação Russa) abriu o código-fonte do kit de ferramentas memlab, projetado para analisar fatias do estado da memória alocada dinamicamente (heap), determinar estratégias para otimizar o gerenciamento de memória e identificar vazamentos de memória que ocorrem ao executar código em JavaScript. O código está aberto sob a licença do MIT.

O framework foi criado para analisar os motivos do alto consumo de memória ao trabalhar com sites e aplicações web. Por exemplo, o memlab foi utilizado para analisar o consumo de memória na utilização de uma nova versão do site Facebook.com, o que permitiu identificar vazamentos que levaram ao travamento do navegador do lado do cliente por esgotamento da memória livre.

As causas de vazamentos de memória ao executar o código JavaScript podem ser referências ocultas a objetos que impedem o coletor de lixo de liberar a memória ocupada pelo objeto, armazenamento imprudente de valores ou implementação de rolagem infinita sem remover elementos antigos da lista. Por exemplo, no código abaixo no Chrome, ocorre um vazamento de memória devido ao objeto “obj”, apesar de ser atribuído o valor nulo, pois o Chrome armazena referências internas aos objetos de saída para posterior inspeção no console web . var obj = {}; console.log(obj); obj = nulo;

Principais características do memlab:

  • Detectando vazamentos de memória no navegador. Memlab permite comparar automaticamente instantâneos de estado de memória dinâmica, detectar vazamentos de memória e agregar os resultados.
  • Uma API orientada a objetos para iteração de heap, permitindo implementar seus próprios algoritmos de detecção de vazamentos e implementar sistemas para analisar instantâneos de estado de heap. A análise de heap é suportada para navegadores baseados no mecanismo Chromium, bem como para as plataformas Node.js, Electron e Hermes.
  • Interface de linha de comando e API para encontrar oportunidades para otimizar o uso de memória.
  • Um sistema de afirmação para Node.js que permite criar testes de unidade e executar programas baseados em Node.js para criar fatias de seu próprio estado, testar sua memória ou escrever verificações de afirmação estendidas.

Fonte: opennet.ru

Adicionar um comentário