heap dump lens
JetBrains Marketplaceplugin 33908free viewer, Pro subscription
Install from the JetBrains Marketplacefree to read; the Pro trial runs 30 days
This is what the machine left behind, and it still answers questions. Bring the ration: the first pass keeps to a fixed memory budget, and a 2.6 GB dump with twenty million objects fits its index under a 512 MB cap.
Heap Dump Lens opens the .hprof file a crashed or bloated JVM leaves behind, in the editor tab of IntelliJ IDEA and the other JetBrains IDEs. The class histogram comes up first, every class with its instance count and bytes, built by one streaming pass inside a fixed memory budget; in our own timing a 2.6 GB dump with twenty million objects indexed in about 12.5 seconds under a 512 MB cap. Thread dumps and GC logs in the unified -Xlog:gc* form open the same way, parsed, so the three files of one incident read in one place, with nothing separate to install. Pro computes the dominator tree over the whole object graph and ranks the top 500 retainers by the bytes each one would free.
- opens
- .hprof and .hprof.gz heap dumps and any file that starts with the hprof magic bytes; .tdump thread dumps, and jstack output through Tools | Open Thread Dump; unified GC logs through Tools | Open GC Log
- runs on
- every JetBrains IDE from 2024.2 on, Community editions included
- store
- JetBrains Marketplace, plugin 33908
- newest version
- 1.4.13, published 2026-10-25
- pro
- a subscription with its own 30-day trial; the price is quoted below as the store shows it

free
- Class histogram: every class in the dump with its instance count and shallow bytes, sortable and filterable, resolved to real class names
- Any size: one streaming pass with bounded memory; a 2.6 GB dump with twenty million objects indexes in seconds inside a 512 MB cap
- Compressed dumps: a .hprof.gz opens like a plain dump, inflated into a work directory with the progress shown, and the copy is removed when the tab closes
- Dump facts: object count, loaded classes, GC roots, format and id width, total heap bytes
- Thread dump viewer: .tdump files open parsed, threads with their state, daemon flag and stack frames, a state breakdown up top
- GC logs: unified -Xlog:gc* logs parsed into pause events with heap before and after, per-pause duration, max and total pause time
- Named errors: a file that is not an hprof dump reports a clear reason, never a stack trace
- Themes: eight looks for the histogram, the retained table, thread dumps and GC log pauses; trying one is free for the open window
pro
- Retained sizes: the dominator tree computed over the whole object graph, what each object would free if it were gone
- Top retainers: the ranked list of the heap's real owners, retained and shallow bytes side by side
- At scale: thirty million references extracted and dominators computed over twenty million objects in under half a minute on the same 2.6 GB dump
- Kept themes: a chosen look stays set from file to file
price, as the store shows it
The viewer is free and stays free. Pro is a subscription for this plugin: USD 4.90 a month or USD 49 a year for individual use. For organizations it is, per user, USD 9.80 a month or USD 98 a year.
where it stops
- Viewer by design: it reads the dump, never rewrites it, and never attaches to a live process
- JFR recordings are out of scope: the files a JVM leaves behind, not flight recording
- No automated leak-suspect story: you get the dominator numbers and read them yourself
- Thread dump parsing covers HotSpot output, and a GC line the parser does not recognize stays out of the totals

what's new
- 1.4.13published 2026-10-25
A thread dump that jcmd Thread.dump_to_file writes on JDK 25 in its text form now opens with its threads. JDK 25 puts each thread's state on the line that names it, a line the viewer up to 1.4.12 did not expect, so it read no thread from such a file and the table said "No jstack, Thread.print or Thread.dump_to_file threads in this dump". Each thread comes in with its frames and lock lines, and its state shows in the State column.
- 1.4.12published 2026-10-23
Heap Dump Lens now names the top retainer of the first heap dump you open without Pro. Once the histogram is up, a line above the tabs gives the class and the bytes it keeps alive, with "See pricing" and "Dismiss" beside it. The line appears once per machine and never while a trial or a license runs.
- 1.4.11published 2026-10-17
Shallow and retained bytes now follow the JVM's GC.class_histogram: the object header, the array length field, references counted at 4 bytes (the compressed-oops size, the JVM's default below a 32 GB heap) and the rounding to 8. A String reads 24 bytes where it read 14, and on our 2.6 GB test dump the heap total ran about 18 percent short. Compute retained sizes (Pro) estimates its need before it starts, about 72 bytes an object, and when the IDE's free heap is short the tab says what it needs and what to raise ("Raise the IDE's heap to at least 2,560 MB") instead of dying part way. Where that 2.6 GB test dump sits beside the build, the release check now runs its index pass inside a 512 MB heap.
more
Pricing, invoices and licensing questions go to sales@twilightventures.dev; anything else about the product to support@twilightventures.dev.