The JXRay memory analyzer processes a binary JVM heap dump and generates a report in HTML format. The report contains two main kinds of information:

  1. Where the memory goes (by class, by GC root, the JVM heap and native memory, etc.)
  2. Where the memory is wasted (e.g. duplicate strings, bad collections, etc.)

Below we provide several sample JXRay reports generated from heap dumps publicly available on the web. Note that when you click on one of the .html files below, your browser will attempt to download it. Depending on the browser, OS and the download/open option you choose, the file may just open in a new browser window, or may be saved in your "Downloads" folder.

1. The following report has been generated from the heap dump available in the Apache JIRA ticket NETBEANS-1123. The dump was generated after an OutOfMemoryError. The report presents the thread that threw this exception, with local variables of all the methods on the stack. The main problems that JXRay uncovered in this dump are:

  • A potential memory leak
  • A very large number of small objects (mainly of types org.netbeans.lib.lexer.token.DefaultToken and byte[]) causing high overhead because of their headers
  • A very large number of byte[] arrays with only one element (0). This looks like a bug, or at least a rather ineconomical data representation.
HTML document [1.7 MB]



2. This report has been generated from the heap dump in Apache JIRA HIVE-20153. It displas an OutOfMemoryError. The main problems detected by JXRay are:

  • A potential memory leak (or just a very large number of elements - nearly half a million - in a single HashMap)
  • 68% of the used heap is consumed by byte[] arrays. Furthermore, just one array, referenced by org.apache.hadoop.mapred.MapTask$MapOutputBuffer .kvbuffer data field, takes 1GB of memory, or 64.3% of used heap.
  • 15% of memory is wasted by empty HashSets - that's the problem that gave rise to the above ticket.
HTML document [565.5 KB]






A simple benchmark that compares performance and memory consumption of Guava weak object interner and a custom fixed size array, lock free (FALF) interner.

Print Print | Sitemap