We strive to make JXRay better, and we are eager to see more use cases. Thus, if you have a real-life heap dump that you are willing to share, and JXRay currently doesn’t detect some problem in it (or doesn’t do it well), please compress and send that dump to us. Please add a brief explanation of the problem. Our e-mail is In exchange, you will receive one personal JXRay license FOR FREE!

What’s new in version 2.7

  • Plain English explanation of detected problems
  • A large number of usability, scalability and performance improvements

What’s new in version 2.6

  • Added detection of duplicate object arrays and array-based lists (such as java.util.ArrayList or java.util.Vector)
  • Added detection of WeakHashMaps with references from values back to keys
  • Performance and scalability improvements

What’s new in version 2.5

  • Added Recommendation Engine, that recommends changes to the code to address concrete problems detected in the dump (currently only for duplicate strings and bad collections)
  • Performance improvements in some corner cases

What’s new in version 2.4

  • Added detection of memory leaks (leak-like object patterns)
  • Improved presentation of the object tree and some other parts of the report
  • If a thread throwing OutOfMemoryError is detected, its stack trace is printed in a separate section, along with local variables for faster diagnostics of the root cause
  • Performance improvements in some corner cases, e.g. when the dump contains extremely long (over 1GB) Strings, StringBuffers etc.
  • At run time, the tool now detects when it’s short of memory (runs GC very frequently) and warns the user.
  • Each report section now has a “What‘s this” link to jxray online documentation.

What’s new in version 2.3

  • Direct retained memory is reported for each class in the “Where memory goes, by class” report section. This is useful for classes like that “exclusively own” objects that they reference, and these objects can take a lot more memory than their owners.
  • Added -extra_classes flag, to allow the user to obtain information for class(es) that are normally not reported because they use too little memory
  • We now properly handle heap dumps generated by JDK 9/10 JVMs. The tool itself can also run on JDK 9/10
  • Added a new problem kind: list with too many null elements
  • The generated HTML files are smaller now. Objects in samples are printed in a more compact form to both improve readability and reduce report size
  • Numerous other improvements to make the report more informative and faster/easier to read

What’s new in version 2.2

  • Off-heap (native) memory used by java.nio.DirectByteBuffer objects is now reported
  • Improved random samples of collections: contents of contained objects are printed where possible, capacity is printed for array-based collections, etc.
  • Improved “ergonomics”: memory overhead is highlighted by different colors depending on the value; if a dump was generated as a result of OutOfMemoryError, the respective thread is printed in the Top-Level Stats section, etc.
  • Added support for some more collection types  

What’s new in version 2.1

  • In the “where memory goes, by class” there are now random samples of objects, for each class and reference chain
  • Fixed some issues with parsing and analyzing Android heap dumps
  • Added new problem kind: primitive arrays where in each element the upper half (high bits), such as two high bytes in int, are zero
  • Improved performance and memory consumption for big heap dumps