JHeapo · JHeapo
JHeapo

Product specification

JHeapo

A streaming, out-of-core Java heap-dump analyzer. Point it at an HPROF dump and see where the memory went — on heaps far larger than the machine's RAM.

Contact us for a build

At a glance

The essentials, in one place.

CategoryJava heap-dump analyzer
Analysis modelStreaming and out-of-core — indexes are built on disk and memory-mapped, so analysis is bounded by disk, not RAM
InputA standard HPROF binary heap dump (.hprof)
OutputA local web UI, streamed live over Server-Sent Events as each phase completes
Heap size handledHeaps far larger than the machine's memory; the JVM running JHeapo needs only a modest -Xmx
PlatformsLinux x64 · macOS x64 · Windows x64
RuntimeSelf-contained — each build bundles its own JDK 25 runtime image
InstallNone. Unpack the archive and run — no installer, no admin prompt, nothing registered with the OS
Runtime dependenciesZero
Disk footprintIndex files are written beside the dump and rebuilt each run (roughly 2.2 GB beside a 1.6 GB dump)
AI assistOptional "Ask Claude" panel — active when an Anthropic API key is present, hidden otherwise
LicensingCommercial, delivered as a private release build — contact us

What it analyzes

Every view streams into the UI as its results become ready.

Overview Histogram Retained heap Dominator tree Threads Leak suspects Duplicate strings Collections Classloaders References Ask Claude (optional)

Built to scale

Crack open your biggest production dump without provisioning a machine large enough to hold it.

Finds the waste

Duplicate strings, under-filled collections, boxed numbers and empty arrays — the fat that quietly fills a heap.

Leak suspects

The biggest retainers, ranked — the first objects to check when memory won't let go.

Retained & dominator

Retained size and the dominator tree show what actually frees when you cut a reference.

Entanglement

A new lens on retention — how entangled your objects are, as a proxy for domain complexity.

Object-model complexity

A number on the sprawl and depth of the types filling your heap.

Requirements & platforms

A packaged build is self-contained; you only need the toolchain if you build from source.

To run a packaged buildNothing to install — the archive carries its own JDK 25 runtime
Supported OSLinux x64, macOS x64, Windows x64
Heap dumpAny standard HPROF dump — from jcmd <pid> GC.heap_dump, jmap -dump, or -XX:+HeapDumpOnOutOfMemoryError
Disk spaceFree space on the dump's volume for the index files (about 1.4× the dump size)
To build from sourceJDK 25, Maven 3.9+, and node on the PATH (the build gates on the UI's own JavaScript)
Persistent API keyKey storage uses the macOS Keychain; on Linux/Windows supply the key per run instead

Running it

Point it at a dump; it opens a browser and starts streaming results.

Packaged build

# Linux jheapo/bin/jheapo dump.hprof # macOS jheapo.app/Contents/MacOS/jheapo dump.hprof # Windows jheapo\jheapo.exe dump.hprof

From the jar

java -jar jheapo.jar dump.hprof

Common options

--direct-buffersAlso run the direct-buffer analysis pass (off by default)
-Djheapo.port=9000Port to listen on (default 7070)
-Djheapo.url=http://0.0.0.0:9000Bind interface and the link shown — e.g. to reach the UI from another machine
-Djheapo.claude.key=sk-ant-…Use an Anthropic key for this run only (not stored); enables the Ask Claude panel
-Djheapo.claude.stub=trueTry the Ask Claude panel offline with canned replies — no key, no network

Data handling

Runs on your machine

The dump is analyzed locally and served to a browser on the same host. Nothing is uploaded.

AI is opt-in

The Ask Claude panel only appears when you supply a key, and an offline stub mode makes no network calls at all.

Share dumps safely

Pair with JScrub to pseudonymize a dump before handing it to a third party for analysis.

Get a build

JHeapo ships as a private, per-platform release build. Tell us your platform and we'll get you set up.

← Back to JHeapo overview