Awesome Open Source
Awesome Open Source


HeapStats is Java troubleshooting tool.
This tool suites of three applications.

  • Agent
    • HeapStats JVMTI agent for gathering JavaVM runtime information continuously.
  • Analyzer
    • HeapStats JavaFX GUI analyzer for analysis by various graphs.
  • CLI
    • HeapStats commandline analyzer.

Also two supplemental applications are available:


Agent gathers various JavaVM runtime information such as the below.

  • The amount of instances and total size per live object
  • The reference relationship of objects on Java Heap
  • Thread condition
  • Process information

More detailes are here.


  • Linux x64 / x86_64 / AArch32
  • Oracle JDK / OpenJDK 6u18 or later

NOTE: For JDK 8u262 or later, we recommend to use built-in agent, JDK Flight Recorder, instead of HeapStats

How to use

You can attach HeapStats agent by any way of the following:

  • -agentlib:heapstats[=conf]
    • JVM will load from library path.
    • should be resolved via LD_LIBRARY_PATH or library path (e.g. /etc/
  • -agentpath:/path/to/heapstats[=conf]
    • JVM will load from specified path
  • heapstats-attacher
    • Attach to existing process
    • Recommend to use on JDK 8 or earlier
  • jcmd <PID> JVMTI.agent_load /path/to/
    • Attach to existing process
    • JVMTI.agent_load has been introduced in Java 9
    • Recommend to specify with absolute path

Build requirements

  • GNU make
  • Apache Ant
  • GCC
  • JDK 7 or later
  • Intel TBB
  • NetSNMP
  • GNU Binutils

See also: HeapStats Builder


Analyzer is GUI application for analyzing data which are collected from Agent.
Also it supports JDP autodiscovery and Error Report Transmission.


Linux x64 or Windows x64

How to use

Run <analyzer dir>/bin/heapstats-analyzer (Linux) or <analyzer dir>\bin\heapstats-analyzer.bat (Windows)


The automatic discovery on JDP (Java Discovery Protocol) can be enabled by the following JVM options.<JMX port><true|false><true|false>

JDP sends a packet per 5 seconds by default. If Analyzer can NOT receive a JDP packet from a monitoring JVM instance, color of its name on the screen will become orange.

Error Report Transmission

Oracle JDK can provide a real-time detection of JVM crash, but OpenJDK DOES NOT support it. In addition, Oracle JDK needs to be run with the following options.

-XX:ErrorReportServer=<address>:<port (4711 by default)>

NOTE: Error Report Transmission has been removed since JDK 12

Build requirements

  • Apache Maven
  • JDK 13 or later

Add / Create Plugin

HeapStats Analyzer supports custom plugin. See SamplePlugin for details.


If you want to analyze data which are collected by HeapStats Agent on CUI environment, you can use HeapStats CLI.


Linux x64 or Windows x64

How to use

Run <cli dir>/bin/heapstats-cli (Linux) or <cli dir>\bin\heapstats-cli.bat (Windows)

If you want to see options, please run heapstats-cli with -help.

Build requirements

  • Apache Maven
  • JDK 13 or later

Documents and Binaries

More detailes and released binaries are available on icedtea community:

Build all

$ configure --with-jdk=/path/to/jdk13
$ make



Contribution are most welcome! HeapStats is an open source project under the GNU General Public License, version 2. See for details.


GNU General Public License, version 2

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Java (705,828
C Plus Plus (367,368
Javafx (2,245
Openjdk (149
Troubleshooting (131
Related Projects