kkokosa / heapspace
git clone https://github.com/kkokosa/heapspace.git
Heapscape: a local Three.js and ClrMD explorer for .NET memory dumps
—
stars, 24h
—
stars, 7 days
+149
stars, 30 days · #1,617
149
★ total
8
forks · 0 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageJavaScript
LicenseMIT
Created2026-09-28 (22d ago)
Last push22d ago
Watchers2
OwnerUser
Links
README excerpt
# Heapscape A local, interactive 3D explorer for .NET memory dumps, built with **ClrMD**, **ASP.NET Core**, and **Three.js**. Fly through managed heaps, inspect objects and references, trace retaining routes, and explore GC roots, finalization queues, card tables, stacks, and native mappings. ## Requirements - **Windows x64** with the **.NET 10 SDK**. `global.json` selects 10.0.100 or a later stable .NET 10 feature band. - **Node.js 22.12+** on a supported release, including npm, and **PowerShell 7**. - A **WebGL2-capable Edge or Chrome** browser. Browser tests use installed Microsoft Edge. - Dumps require a matching local runtime/DAC, OS, and analyzer architecture. Cross-OS/architecture analysis is not supported; ELF mapping parsing alone does not imply end-to-end Linux support. ## Quick start Run in PowerShell from the directory where you keep repositories: [code] Open **http://127.0.0.1:5077**. Stop with **Ctrl+C**. The launcher restores locked JavaScript dependencies when missing or mismatched, builds local frontend assets, restores the locked backend dependencies, and starts the server from its correct content root. To run alongside another viewer: [code] `-Port 0` chooses an unused loopback port; use the URL printed in `Now listening on`. Every server instance has its own temporary upload directory. NuGet uses your normal configured sources, typically `https://api.nuget.org/v3/index.json`. If that endpoint fails, inspect the error and explicitly select an alternative: [code] `Generate-Dumps.ps1` accepts the same override. There is no silent fallback, TLS bypass, or machine-wide configuration change. To try the synthetic Console workload, follow the source-only sample instructions: build the existing fixture, collect a dump locally, and open it in Heapscape. No sample dumps or archives are distributed; even synthetic-process dumps may contain private data and must not be shared. ## Daily use 1. Choose **Open a memory dump**, optionally enable **Include strings**, and select a trusted full `.dmp` / `.core` dump (maximum **2 GiB**). Analysis runs in a cancellable worker. 2. Click an object or expand **Find object(s)** to search by type, exact address, or available preview. Inspect incoming/outgoing references, adjust their depths independently, or choose **Show all retaining routes**. 3. Use GC highlighting and per-card scan toggles to explore observed retention. Read **Analysis notes** for coverage and uncertainty; incomplete evidence is not proof that an object is unreachable. 4. Reopen or remove processed dumps in the dump dialog. Browser refresh preserves them while that server remains running; stopping the server does not preserve the saved-dump list. Prism is the default theme. Physical GC grouping, bundled references, roots/native memory/cards/finalization, 5% selection context, and Very fast (3x) reference signals are always enabled. **Legends** describes memory materials only. | Control | Action | | --- | --- | | Left drag / rig