LeakCanary is a sophisticated memory leak detection library for Android and Java, developed by Square. In production, it integrates into Android applications to automatically monitor object allocations, trigger heap dumps upon detecting suspicious memory growth, and analyze these dumps to identify leaking objects. It provides detailed leak traces showing the reference path from GC roots to the leaking object, helping developers pinpoint the root cause. The project also includes Shark Dive, a powerful desktop application for interactive heap dump exploration using treemap, radial, and stack visualizations, and a CLI tool for batch analysis. The architecture is a multi-module monorepo with a clean separation of concerns. The core analysis engine (shark) is platform-independent, handling HPROF parsing, heap graph construction, dominator tree computation (Lengauer-Tarjan), and shortest path finding. Android-specific modules (leakcanary-android-*) provide lifecycle integration, UI, and notification handling. The desktop app (shark-dive-app) is built with Kotlin Compose UI and features an agent protocol for AI-assisted analysis. The codebase is primarily Kotlin, leveraging Okio for I/O and Gradle for building. The repository exhibits exceptionally high craftsmanship. It implements complex graph algorithms (dominator trees, multi-strength BFS reachability, squarified treemap layout) with clear, well-tested code. It solves hard engineering problems like sorting data larger than 2GB (PagedByteArrayTimSort) and building memory-efficient indexes. While actively maintained, the codebase shows some technical drift with deprecated APIs and TODOs, but the core algorithms and architecture are timeless and robust. It is a prime example of a well-engineered, domain-specific analysis tool.
Memlab is a comprehensive JavaScript memory leak detection and heap analysis framework developed by Meta. It provides a CLI, a programmatic API, and an MCP (Model Context Protocol) server for AI-assisted debugging. The system captures heap snapshots from Chromium (via Puppeteer), Node.js, Electron.js, and Hermes, then parses and analyzes them to identify memory leaks, optimization opportunities, and retention patterns. It includes specialized detectors for detached DOM elements, React component leaks, event listener accumulation, duplicate strings, and global variable bloat. The architecture is a monorepo with packages for core parsing and algorithms, E2E browser automation, heap analysis plugins, a public API, a CLI, an in-browser visualizer (MemLens), and an MCP server that exposes over 100 analysis tools. Key data flows involve warmup, browser interaction, snapshot capture, parsing, leak filtering, trace clustering (heuristic and ML-based), and report generation. External dependencies include Puppeteer, Chromium, and the MCP SDK.