This document describes what is new in Java Mission Control (JMC) release 6.0.
JMC is an advanced set of tools that enables efficient and detailed data analysis, and delivers advanced, unobtrusive Java monitoring and management. JMC provides sections for common analysis areas such as code performance, memory, and latency.
JMC 6 for JDK 9 - Major New Release!
This is a major new release of Java Mission Control. It is the first version of Java Mission Control that works with JDK 9. Note that this version can still connect to JDK 7 and JDK 8 runtimes. It can also open and visualize flight recordings from JDK 7 and 8.
Eclipse 4.5 and 4.6 Support
The Mission Control client is now built to run on Eclipse 4.5 and later. To install Java Mission Control into Eclipse, go to the Java Mission Control update site.
There are now several supported plug-ins for use with Java Mission Control. Go to "Install New Software" in Java Mission Control(or Eclipse) to install. If running as plug-ins inside of Eclipse, do not forget to add the update site for supported plug-ins.
The JMC team is still sharing experimental plug-ins on the experimental update site. Go to "Install New Software" in Java Mission Control (or Eclipse) to install. If running as plug-ins inside of Eclipse, do not forget to add the update site for experimental plug-ins.
Minor Bugfixes and Improvements
There are hundreds of minor fixes and improvements in this release. For example: The Java Flight Recorder UI will no longer as easily run out of UI handles, no more clipping problems with large stack traces, flight recordings will visualize faster, and many more.
Automated Analysis of Flight Recordings
Java Mission Control now supports automated analysis of flight recordings. The provided rules and heuristics will help you find troubling functional and performance problems in your application and help provide tuning tips. Some rules that operate with relatively unknown concepts, like safe points, will provide explanations and links to further information. Some rules are parameterized and can be configured to make more sense in your particular environment. Individual rules can be enabled/disabled as you see fit. This is the very first cut - more rules and improved heuristics will be provided as part of JMC updates over time.
Running the Automated Analysis Headless
The Mission Control base jars required for the automated analysis are all JDK 7 (and later) compatible, and built to be useable outside of Eclipse. This means that you can perform the automated analysis from the command line. Try running: com.oracle.jmc.flightrecorder.rules.report.JfrRulesReport -min info -format text C:\recordings\JMC-5033\while_installing_from_updatesite.jfr -verbose when having the following JMC plug-ins on your class path: com.oracle.jmc.common, com.oracle.jmc.flightrecorder, com.oracle.jmc.flightrecorder.rules, com.oracle.jmc.flightrecorder.rules.jdk If you wish to have the WebLogic Server rules, also add: com.oracle.jmc.flightrecorder.ext.wls.parser, com.oracle.jmc.flightrecorder.ext.wls.rules
Use the PDE Plug-in for Creating Custom Rules
It is possible to create custom plug-ins providing one or more rules to participate in the automated analysis of recordings. The easiest way to start creating your own custom rules is to install the PDE plug-in into Eclipse from the experimental update site.
The navigation between pages has moved from being inside of the JFR editor, to now be in the Outline view. Individual analysis rules can be associated with pages, and an overlay on the page icons will show if a rule has found something interesting that relates to a specific page.
New Configurable Stacktrace View
The Stack Trace view has become a separate, configurable, view. When you select something that can be represented as an aggregation of stack traces in the user interface, it will be shown in the Stack Trace view. By default the most commonly taken path will be displayed, and you can switch between branches using the buttons or arrow keys. Should you want to, you can still configure the view to work in the old tree style. By default the tree depth will be reduced by just listing frames vertically until a branch is hit. That too can be disabled if you really want to get back to the old style of representing trees. That said, the default style saves a lot of screen estate, and shows the most commonly sought information by default.
Custom pages can now be created from the Event Browser page. Simply select the event types of interest and click the Create New Page button. The custom page features a filter box at the top which allows you to perform complex filtering. Grouping, sorting and charting can also be accomplished with a few simple context clicks in the view. Once you are happy with the page, it can be exported and shared.
It is now possible to focus the user interface on a selection, and to store and re-use the selection in other pages. The selection captures all kinds of aspects associated with the selection, such a the event types, the actual events represented by the selection or the time range spanning the selection. Different selections can be stored, and you can switch between them using the selection drop down. You can also select which aspect of the selection you wish for a page to focus on. Different pages may chose different default aspects to focus on from a selection, and they may also select an aspect depending on what is in the actual selection.
The Results View
When the selected page has one or more results associated with it, the Results view will display those results.
The Properties View
The new Properties view shows the attributes for the current selection, usually one or more events. It is quite useful for setting the focus selection to something very specific, such as the value of the attribute of a specific event.
Extending the Console
The API for extending the management console has been simplified and improved. The easiest way to see the new API in action is to create a console extension using the Mission Control PDE plug-in inside of Eclipse.
The Metadata Plug-in (JFR)
This plug-in shows the metadata available in a recording. This is quite useful when developing rules, as information such as the event type identifiers are typically required. That said, sometimes just looking at the description for an attribute or event type can be helpful to better understand the data.
The JavaFX Plug-in (JFR)
This plug-in provides a special page for improved visualization of JavaFX events. It will show information from the pulse logger. For each individual pulse details, such as the name and duration of the phases, will be shown.
The WebLogic Plug-in (JFR)
This plug-in provides a set of pages for analysis of applications deployed in WebLogic Server. A wide range of information is available, such as servlet executions, EJB calls, JDBC calls, JTA transactions and much more. Of course, all that information can be correlated to what is going on in the Java runtime, providing a powerful diagnostics and profiling environment for WebLogic Server. This plug-in also contains JFR parser extensions and rules for automated analysis of WLS performance.
The G1 Plug-in (JFR)
This experimental plug-in shows detailed information about the G1 garbage collector. Note: This plug-in only works with JDK 9 recordings.
The Usual Suspects
Note that most of the old experimental plug-ins are still available, such as JOverflow (heap waste analysis of hprof dumps), the JMX Console Subscription plug-in (see what is actually fetched), the Flight Recorder Launch Configuration plug-in (control the flight recorder as part of launching your apps from within Eclipse), the PDE plug-in (wizards for quickly extending JMC), and more. Since they are not new, they did not get their own entries in this section.
Synopsis: Better input parsing
Mission Control is now using its framework for physical quantities and units of measurement in more places. This provides a more consistent and coherent way of both entering and visualizing values, as well as services like auto completion.
Synopsis: Can now have more recordings open simultaneously
In previous versions of JMC the entire UI was generated in one go, requiring massive amounts of native UI handles. Now the UI is generated on the fly, making it possible to have more flight recordings open at the same time.
Synopsis: Proper handling of reused OS thread ids
Previous versions of JMC did not handle reused OS thread ids properly. Now such thread id reuse will be handled properly as separate threads.
Synopsis: No more clipping problems with large stack traces
The way we rendered stack traces previously could lead to clipping problems when the tree grew quite big. The new stack trace view makes it unlikely to encounter the condition when such clipping occurs in the native component.
Synopsis: Will now provide a visual hint if not showing all events
Previously, if there were more events than could fit a table, the table would cut off at a certain number of events. Now the last row of the table will indicate if such a cut off is taking place, as well as show both the limit and how many events would have been available in total. Also, the maximum number of events to show can now be configured in the preferences.
Synopsis: JMC in Eclipse on Linux on JDK 8
If you are running JMC 6 in Eclipse on JDK 8, you will need to set the environment variable SWT_GTK3=0 to force the use of GTK2 for JavaFX based plug-ins to work, such as JOverflow.
Synopsis: Hibernation and time
After the bugfix of https://bugs.openjdk.java.net/browse/JDK-6523160 in JDK 8, the RuntimeMXBean#getUptime() attribute was re-implemented to mean "Elapsed time of JVM process", whilst it previously was implemented as time since start of the JVM process. The uptime attribute is used by JMC, together with RuntimeMXBean#getStartTime(), to estimate the actual server time. This means that time stamps, as well as remaining time for a flight recording, can be wrong for processes on machines that have been hibernated.
Synopsis: Tooltip overflow and clipping on OS X with HiDPI screens
The tooltip displayed when hovering over data points or chart elements can be clipped, and the information within is not always possible to read, if you are using a HiDPI monitor on OS X. As a workaround, the same information is sometimes available from the Properties view if you first make a selection in the chart.
Synopsis: Problem drag-and-dropping recordings to the analysis page
It is possible to drag and drop flight recordings in to Mission Control to open them. However, in JMC 6.0.0, dragging a recording to the new Automated Analysis Results page will not work. As a matter of fact, on the Mac OS X platform, this can result in a crash. A workaround is to drag it to the top of the page or to any other page.
Synopsis: Problem with clipping of tooltips on HiDPI monitors
The tooltip that is displayed when hovering over data points or chart elements can be clipped, and the information within is not always possible to read if you are using a HiDPI monitor. As a workaround, you can sometimes get the same information from the Properties view if you first make a selection in the chart.
Synopsis: Java FX based plug-ins do not work on Linux system without GTK 3
The Coherence and the JOverflow are embedding Java FX in SWT, and will not work on Linux systems not having GTK 3.