CommunityCodierung & Entwicklunggithub.com

chromedevtools/memory-leak-debugging

Diagnostiziert und behebt Speicherlecks in JavaScript/Node.js-Anwendungen. Verwende dies, wenn ein Nutzer über hohen Speicherverbrauch, OOM-Fehler berichtet oder Heap-Snapshots mit den Chrome DevTools MCP-Speichertools erfassen, vergleichen oder untersuchen möchte.

Was ist memory-leak-debugging?

Dieses Skill bietet eine umfassende Anleitung und Workflows zum Auffinden, Diagnostizieren und Beheben von Speicherlecks in JavaScript- und Node.js-Anwendungen mithilfe der Chrome DevTools MCP-Speichertools. Es basiert auf dem Prinzip, MCP-Tools wie `compare_heapsnapshots` und `take_heapsnapshot` zu verwenden, anstatt rohe `.heapsnapshot`-Dateien direkt zu verarbeiten, da diese sehr groß sind und unnötig viele Tokens verbrauchen. Das Skill hilft dabei, Speicherlecks zu isolieren – ob clientseitig im Browser oder serverseitig in Node.js – und behandelt häufige Ursachen wie losgelöste DOM-Knoten, unbehandelte Closures, globale Variablen sowie nicht entfernte Event-Listener. Es ist für den Einsatz mit dem `chrome-devtools-mcp`-Tool gedacht und setzt voraus, dass der Server mit dem Flag `--memoryDebugging` gestartet wurde, um die erweiterten Debugging-Funktionen freizuschalten. Der Workflow umfasst das Erfassen von Snapshots in verschiedenen Zuständen, deren Vergleich zur Identifizierung von Speicherwachstum, die Untersuchung von Retainern und Dominator-Ketten sowie die Nutzung vorgefilterter Kategorien (z. B. `objectsRetainedByDetachedDomNodes`), um spezifische Leckarten gezielt zu analysieren.

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

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Speicherleck-Debugging

Dieses Skill bietet fachkundige Anleitungen und Workflows zum Auffinden, Diagnostizieren und Beheben von Speicherlecks in JavaScript- und Node.js-Anwendungen mit den Chrome DevTools MCP-Tools.

Voraussetzungen

Die erweiterten Speicher-Debugging-Tools (compare_heapsnapshots, get_heapsnapshot_details usw.) sind nur verfügbar, wenn der Server mit dem Flag --memoryDebugging gestartet wurde. Prüfe zuerst, ob diese Tools verfügbar sind; falls nicht, versuche, die MCP-Konfigurationsdatei zu lesen, um festzustellen, ob --memoryDebugging aktiviert ist.

Kernprinzipien

  • MCP-Speichertools bevorzugen: Versuche NICHT, rohe .heapsnapshot-Dateien direkt zu lesen, da sie extrem groß sind und zu viele Tokens verbrauchen. Verwende stattdessen die Chrome DevTools MCP-Heap-Snapshot-Tools, um Snapshots zusammenzufassen, zu vergleichen und zu untersuchen.
  • Das Leck isolieren: Stelle fest, ob das Leck im Browser (clientseitig) oder in Node.js (serverseitig) auftritt.
  • Häufige Übeltäter: Achte auf losgelöste DOM-Knoten, unbehandelte Closures, globale Variablen, nicht entfernte Event-Listener und unbegrenzt wachsende Caches. Hinweis: Losgelöste DOM-Knoten sind manchmal beabsichtigte Caches; frage immer den Benutzer, bevor du sie auf null setzt.
  • Geladene Snapshots schließen: Heap-Snapshots können groß sein. Verwende nach Abschluss einer Untersuchung close_heapsnapshot für jeden geladenen Snapshot, um den vom MCP-Server belegten Speicher freizugeben.

Workflows

1. Snapshots erfassen

Wenn du einen Speicherleck in einer Frontend-Webanwendung untersuchst, verwende die chrome-devtools-mcp-Tools, um mit der Anwendung zu interagieren und Snapshots zu erstellen.

  • Verwende seitenspezifische Tools wie click, navigate_page, fill usw. (mit Angabe von pageId), um die Seite in den gewünschten Zustand zu versetzen.
  • Setze die Seite nach den Interaktionen wieder in den ursprünglichen Zustand zurück, um zu sehen, ob Speicher freigegeben wird.
  • Wiederhole die gleichen Benutzerinteraktionen 10 Mal, um das Leck zu verstärken.
  • Verwende take_heapsnapshot (mit pageId), um .heapsnapshot-Dateien auf der Festplatte zu speichern – zu Beginn (Baseline), nach den Aktionen (Ziel) und nach dem Zurücksetzen (Endzustand).

2. Snapshots vergleichen

Sobald du mit take_heapsnapshot .heapsnapshot-Dateien erstellt hast, vergleiche sie mit den Chrome DevTools MCP-Speichertools.

  • Beginne mit get_heapsnapshot_summary für jeden Snapshot, um zu bestätigen, dass die Dateien geladen werden, und um die Gesamtsummen auf hoher Ebene zu vergleichen.
  • Verwende compare_heapsnapshots, um Baseline- und Ziel-Snapshots zu vergleichen. Starte ohne classIndex für den Zusammenfassungsdiff und fordere dann nur bei verdächtigem Wachstum detaillierte Klassen-Diffs an, indem du classIndex angibst.
  • Nutze die Zusammenfassungsausgabe von compare_heapsnapshots, bevor du dich mit spezifischen Knoten-IDs befasst.

3. Retainer und Dominator-Ketten untersuchen

Wenn eine Klasse oder ein Objekttyp unerwartet wächst, untersuche die Retaining-Kette und die Dominatoren mit den MCP-Tools, bevor du den Code änderst.

  • Verwende get_heapsnapshot_class_nodes, um Instanzen der verdächtigen Klasse aufzulisten.
  • Verwende get_heapsnapshot_retainers, get_heapsnapshot_retaining_paths, get_heapsnapshot_dominators und get_heapsnapshot_edges, um zu verstehen, warum repräsentative Knoten noch erreichbar sind.
  • Verwende get_heapsnapshot_object_details mit einer bestimmten nodeId, um detaillierte Objektmetadaten (Größe, Typ, Entfernung und DOM-Abhängigkeit) abzurufen.
  • Verwende get_heapsnapshot_duplicate_strings, wenn das Wachstum von Zeichenketten den Diff dominiert.
  • Lies references/common-leaks.md für Beispiele häufiger Speicherlecks und deren Behebung, nachdem der Retaining-Pfad auf Anwendungscode verweist.

4. Erweiterte Analyse und kategorisierte Filter

Verwende die integrierten MCP-Speichertools und Filter, um spezifische Leckkategorien direkt zu identifizieren, ohne externe Tools.

  • Verwende get_heapsnapshot_details oder get_heapsnapshot_class_nodes mit filterName, um häufige Leckursachen gezielt anzusteuern:
    • objectsRetainedByDetachedDomNodes: Identifiziert losgelöste DOM-Elemente, die im Speicher gehalten werden.
    • objectsRetainedByEventHandlers: Identifiziert Objekte, die durch nicht entfernte Event-Listener am Leben gehalten werden.
    • objectsRetainedByContexts: Identifiziert Objekte, die in Closures oder Ausführungskontexten gefangen sind.
    • objectsRetainedByConsole: Identifiziert Objekte, die durch Konsolenprotokollierung zurückgehalten werden.

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.

Verwandte Skills