chromedevtools/debugagem-vazamento-memoria

Diagnostica e resolve vazamentos de memória em aplicações JavaScript/Node.js. Use quando um usuário relatar alto uso de memória, erros OOM ou quiser capturar, comparar ou inspecionar snapshots de heap com as ferramentas de memória do Chrome DevTools MCP.

O que é debugagem-vazamento-memoria?

Este skill fornece orientação especializada e fluxos de trabalho para encontrar, diagnosticar e corrigir vazamentos de memória em aplicações JavaScript e Node.js usando as ferramentas MCP do Chrome DevTools. Ele se concentra em usar ferramentas MCP de heap snapshot (como `compare_heapsnapshots`, `get_heapsnapshot_details`, etc.) em vez de ler arquivos `.heapsnapshot` brutos, que são muito grandes e consomem muitos tokens. O skill abrange fluxos de trabalho para capturar snapshots em diferentes estados (linha de base, alvo e final), compará-los para identificar crescimento suspeito e inspecionar cadeias de retentores e dominadores para rastrear a causa raiz. Também inclui filtros avançados para categorizar vazamentos comuns, como nós DOM desanexados, listeners de eventos não removidos, closures e retenção por console. O objetivo é isolar o vazamento (cliente ou servidor), identificar culpados comuns (como nós DOM desanexados, closures, variáveis globais e caches sem limite) e fornecer etapas acionáveis para corrigi-los, lembrando sempre de fechar snapshots carregados com `close_heapsnapshot` para liberar memória do servidor MCP. Ele suporta as plataformas Chrome DevTools MCP e é ideal para desenvolvedores que lidam com alto uso de memória ou erros OOM.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/chromedevtools/chrome-devtools-mcp/tree/main/skills/memory-leak-debugging

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Debug de Vazamento de Memória

Este skill fornece orientação especializada e fluxos de trabalho para encontrar, diagnosticar e corrigir vazamentos de memória em aplicações JavaScript e Node.js usando as ferramentas MCP do Chrome DevTools.

Pré-requisitos

As ferramentas avançadas de debug de memória (compare_heapsnapshots, get_heapsnapshot_details, etc.) só estão disponíveis quando o servidor é iniciado com a flag --memoryDebugging. Primeiro, verifique se essas ferramentas estão disponíveis; se não estiverem, tente ler o arquivo de configuração MCP para verificar se --memoryDebugging está habilitado.

Princípios Fundamentais

  • Prefira as ferramentas MCP de memória: NÃO tente ler arquivos .heapsnapshot brutos diretamente, pois eles são extremamente grandes e consumirão muitos tokens. Use as ferramentas de heap snapshot do Chrome DevTools MCP para resumir, comparar e inspecionar snapshots.
  • Isole o Vazamento: Determine se o vazamento está no navegador (lado do cliente) ou no Node.js (lado do servidor).
  • Culpados Comuns: Procure por nós DOM desanexados, closures não tratadas, variáveis globais, listeners de eventos que não foram removidos e caches que crescem sem limites. Nota: Nós DOM desanexados às vezes são caches intencionais; sempre pergunte ao usuário antes de anulá-los.
  • Feche Snapshots Carregados: Snapshots de heap podem ser grandes. Após concluir uma investigação, use close_heapsnapshot para cada snapshot carregado para liberar a memória mantida pelo servidor MCP.

Fluxos de Trabalho

1. Capturando Snapshots

Ao investigar um vazamento de memória em uma aplicação web frontend, utilize as ferramentas do chrome-devtools-mcp para interagir com a aplicação e tirar snapshots.

  • Use ferramentas específicas de página como click, navigate_page, fill, etc. (especificando pageId) para manipular a página até o estado desejado.
  • Reverta a página ao estado original após as interações para ver se a memória é liberada.
  • Repita as mesmas interações do usuário 10 vezes para amplificar o vazamento.
  • Use take_heapsnapshot (com pageId) para salvar arquivos .heapsnapshot no disco nos estados de linha de base, alvo (após ações) e final (após reverter ações).

2. Comparando Snapshots

Depois de gerar arquivos .heapsnapshot usando take_heapsnapshot, compare-os com as ferramentas de memória do Chrome DevTools MCP.

  • Comece com get_heapsnapshot_summary para cada snapshot para confirmar que os arquivos carregam e comparar totais de alto nível.
  • Use compare_heapsnapshots para comparar snapshots de linha de base e alvo. Comece sem classIndex para o diff resumido e, em seguida, solicite diffs detalhados de classe apenas para crescimento suspeito, especificando classIndex.
  • Use a saída resumida de compare_heapsnapshots antes de analisar IDs de nós específicos.

3. Inspecionando Retentores e Cadeias de Dominadores

Quando uma classe ou tipo de objeto cresce inesperadamente, inspecione a cadeia de retenção e os dominadores com as ferramentas MCP antes de alterar o código.

  • Use get_heapsnapshot_class_nodes para listar instâncias da classe suspeita.
  • Use get_heapsnapshot_retainers, get_heapsnapshot_retaining_paths, get_heapsnapshot_dominators e get_heapsnapshot_edges para entender por que nós representativos ainda estão acessíveis.
  • Use get_heapsnapshot_object_details com um nodeId específico para recuperar metadados detalhados do objeto (tamanho, tipo, distância e estado de desanexação do DOM).
  • Use get_heapsnapshot_duplicate_strings quando o crescimento de strings domina o diff.
  • Leia references/common-leaks.md para exemplos de vazamentos de memória comuns e como corrigi-los depois que o caminho de retenção apontar para o código da aplicação.

4. Análise Avançada e Filtros Categorizados

Use as ferramentas MCP de memória e filtros integrados para identificar categorias específicas de vazamento diretamente, sem ferramentas externas.

  • Use get_heapsnapshot_details ou get_heapsnapshot_class_nodes com filterName para focar em causas comuns de vazamento:
    • objectsRetainedByDetachedDomNodes: Identifica elementos DOM desanexados retidos na memória.
    • objectsRetainedByEventHandlers: Identifica objetos mantidos vivos por listeners de eventos não removidos.
    • objectsRetainedByContexts: Identifica objetos presos em closures ou contextos de execução.
    • objectsRetainedByConsole: Identifica objetos retidos por logs de console.

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

chromedevtools/a11y-debugging

Uses Chrome DevTools MCP for accessibility (a11y) debugging and auditing based on web.dev guidelines. Use when testing semantic HTML, ARIA labels, focus states, keyboard navigation, tap targets, and color contrast.

chromedevtools/chrome-devtools

Uses Chrome DevTools via MCP for efficient debugging, troubleshooting and browser automation. Use when debugging web pages, automating browser interactions, analyzing performance, or inspecting network requests. This skill does not apply to `--slim` mode (MCP configuration).

chromedevtools/chrome-devtools-cli

Use this skill to write shell scripts or run shell commands to automate tasks in the browser or otherwise use Chrome DevTools via CLI.

chromedevtools/cookie-debugging

Uses Chrome DevTools MCP for inspecting, debugging, and testing cookies, session state, authentication issues, and cookie consent compliance. Use when diagnosing 401/403 errors, authentication redirects, session expiration, Cookie/Set-Cookie header issues, cookie banner consent conformance, or third-party cookie/SameSite/Partitioned cookie warnings.

chromedevtools/debug-optimize-lcp

Guides debugging and optimizing Largest Contentful Paint (LCP) using Chrome DevTools MCP tools. Use this skill whenever the user asks about LCP performance, slow page loads, Core Web Vitals optimization, or wants to understand why their page's main content takes too long to appear. Also use when the user mentions "largest contentful paint", "page load speed", "CWV", or wants to improve how fast their hero image or main content renders.

chromedevtools/troubleshooting

Uses Chrome DevTools MCP and documentation to troubleshoot connection and target issues. Trigger this skill when list_pages, new_page, or navigate_page fail, or when the server initialization fails.

Habilidades Relacionadas