1 What's New in JDK Mission Control 8

JDK Mission Control (JMC) is an advanced set of tools for managing, monitoring, profiling, and troubleshooting Java applications.

The following are the new features of JMC Release 8.

Flame Graphs to Analyze Stack Traces

Flame Graph view renders aggregated stack trace collected by the JFR events. It helps in faster comprehension and reduced time for root cause analysis.

To enable flame graph view in JMC, go to the menu item Window, Show View, Other, Mission Control, and then Flame View. Click Open.

Here is a sample image of the flame graph displaying the Threads information:

Figure 1-1 Flame Graph view

Flame Graph view

A flame graph has the following features:

  • A stack trace is represented as a column of boxes, where each box represents a function (a stack frame).
  • The x-axis shows the stack trace collection and the y-axis shows the stack depth.
  • The width of the box indicates the frequency of function occurrences. The wider the boxes, function occurrences are more, as compared to narrow boxes.
  • The search field helps you to search for a specific term, which can include regular expressions. The searched functions are highlighted. Also, the sum of matched stack traces is shown on the flame graph as a percentage of the total profile. This is useful not just for locating functions, but also for highlighting logical groups of functions.
  • The orientation of the graph can be switched by selecting the Flame Graph or Icicle Graph icons. The Icicle Graph displays top-to-bottom orientation, whereas the Flame Graph displays bottom-to-top orientation.

Treemap Viewer in JOverflow

Treemaps are used to visualize the memory usage by classes. It helps to identify the resources consuming most RAM or memory. Like JOverflow instance viewer, the treemap viewer utilizes the filter feature provided by JOverflow.

To enable JOverflow Treemap view in JMC, go to the menu item Window, Show View, Other, JOverflow, and then JOverflow Treemap. Click Open.

Here is a sample image of JOverflow Treemap:

Figure 1-2 JOverflow Treemap

JOverflow Treemap

The squarified treemap is displayed where memory usage is aggregated by class and package names. The larger area depicts more memory consumed by the class or package. The background colors indicate the treemap nodes at different levels.

Graphical View of Stack Traces

Graph view renders aggregate stack traces with cumulative count. It presents the stack trace in a graphical format, which helps identify method path to its root.

To enable graph view in JMC, go to the menu item Window, Show View, Other, Mission Control, and then Graph View. Click Open.

Here is a sample image displaying the Threads information in the graph view:

Figure 1-3 Graph View

Graph View

Coherence Tab Pack Plug-in Converted to SWT

Coherence Tab Pack plug-in is used for viewing cluster information as well as aggregated Coherence MBeans. Coherence plug-in is now converted to Standard Widget Toolkit (SWT), which removes dependency on JDK 11 and JavaFX. See Install Plug-ins for JMC Standalone Application for the process to install the plug-in.

The Coherence Tab Pack plug-in consists of the following tabs:

  • Cluster Overview: Provides various metrics regarding the overall health of the cluster
  • Machines: Provides information about all the cluster machines, including cores, load, and memory pressure
  • Members: Provides details about the individual members
  • Services: Provides information regarding the running services and various performance metrics
  • Caches: Lists the individual cache and their size, memory footprint, and individual node details
  • Proxy Servers: Displays proxy servers and connections
  • Persistence: Provides information about active or on-demand persistence

Support for LZ4 Compressed Recordings

JMC 8 now supports working with JFR recordings that are compressed using LZ4 format. LZ4 is an extremely fast decoder, which provides compression speed of more than 500 MB/s per core and is scalable with multi-cores CPU.

You can compress the JFR recordings that are in zip or gzipped format. Use the file utility to know the file type. Compress the data (.jfr) file using LZ4 utility or record using compress=true.

Example code to compress JRF recording:

$ lz4 <un_compressed_filename>.jfr <compressed_filename>.jfr

Output: Compressed 8182601 bytes into 3626010 bytes ==> 44.31%

Improved Thread Graphs

Thread graph is enhanced with the following:

  • Time filter that display the start and end time of the visible range
  • Zoom in and zoom out functionality
  • Zoom to automatically select the highlighted area on the chart
  • Vertical and horizontal scrolling of chart canvas

Allocation Pressure Column added to Memory and TLAB Pages

A new column is added to the Memory page to display the Total Allocation as a percentage value - Total Allocation (%).

A new tab By Top Methods is added to the TLAB Allocations (Thread Local Allocation Buffers) page in addition to the existing By Threads tab to classify the Item Histograms against Top Methods. Both tabs now have Alloc in TLABs (%) and Alloc Outside TLABs (%) columns, which provides estimated allocation size of TLAB as percentage. These updates will make it easier to view relevant areas of allocation pressure.

Enabling Non-execute JDBC Events of WebLogic Plugin

The default filter for JDBC events of JDBC Operations and SQL Statements pages have been modified. By default, you can view the events generated by JDBC Statement Execute event type. Click Show page filter if you wish to view all events.

Reintroduction of Percentage Column

Percentage column is reintroduced in all histogram tables.