Azul Mission Control 9.0.0
Azul Mission Control is a fully-tested build of JDK Mission Control open-sourced by Oracle and managed as a project under the OpenJDK umbrella.
Community builds of Azul Mission Control are free to download and use without restrictions.
What’s new
This is the latest (2024) major release of Azul Mission Control with over 110 fixes and improvements.
Azul Mission Control 9.0.0 requires JDK 17+ to run and introduces several new features, enhancements, and bug fixes. This version continues to support connecting to, and parsing JFR recordings from JDK 7u40 and later, and can open and visualize flight recordings from JDK 7 and 8. Azul Mission Control is available for Windows (x86_64), Mac OS X (ARM and x86_64), and Linux (ARM and x86_64).
General Improvements
Eclipse 4.30 Support
The Mission Control client is now built to run optimally on Eclipse 2023-12 and later. To install Azul Mission Control into Eclipse, go to the update site (Help | Install New Software…). The URL to the update site will be vendor specific, and some vendors will instead provide an archive with the update site.
JDK Mission Control Core Improvements
Better JFR Parser Performance
Multiple efforts have been made to reduce allocations in the JMC parser, including: reduced allocation of Doubles, reduced allocation rate in ParserStats. Also, when duration events aren’t ordered by their end time (e.g. events which stack so that the last event finishes first, or file reads with overlaps) DisjointBuilder.add
can be slow because of the linear search for the lane, and then a linear time reordering. This has been improved with a binary search.
Support for Bigger Checkpoint Event Sizes
The Azul Mission Control JFR parser now supports checkpoint event sizes beyond the u4 limit.
Moved Classes
-
Non-Eclipse dependent classes from
org.openjdk.jmc.ui.common
toorg.openjdk.jmc.common
.There were a number of classes previously in
jmc.ui.common
that would be a great asset to the core distribution (and the third-party applications that consume jmc-core), and these classes now live injmc.common
. Please see JMC-7308 for further information. -
rjmx
bundle from application to core.The rjmx classes and related services (FlightRecorderService) are now exposed for third-party application usage. Please see JMC-7069 for further information.
-
org.openjdk.jmc.flightrecorder.configuration
bundle from application to core.The
org.openjdk.jmc.flightrecorder.configuration
bundle contains many classes useful for working with jfr, and are now available in core. Please see JMC-7307 for further information.
Java Flight Recorder (JFR)
Improved Search
Searching in the search bar now also searches event type IDs, and there is also a (by default hidden) column that makes it easy to show the event type IDs for the shown events.
Added Support for JFR on Native Images
Previously Azul Mission Control was unable to start flightrecorder on a GraalVM native image, even if there is built-in jfr support. This has now been fixed.
Java Based Flamegraph Visualization
The previous flamegraph visualization takes place in an embedded browser component (provided by the Eclipse platform), unfortunately this approach has some drawbacks, the first being a bit slow. This view is now using a Java (Swing) based flamegraph library. Also, the flame graph model creation performance have been improved.
Visualization and Rule for FileChannel.force()
The File I/O page has been updated to show force related information. There are two new columns added – Force Count and Update Metadata. Both are hidden by default and can be enabled by right clicking the table. The chart will also include a File Force row. There is a preference setting for the associated file force rule, where the peak duration warning limit can be set. See JMC PR#533 for more information.
New Rules
-
Rule that checks on G1 pause time target compliance. This new rule looks at the pause time target and compares it to the actual pauses.
-
Rule that looks at finalization statistics. JDK 18 comes with a FinalizationStatistics event that helps users find where in their application finalizers are run. This is important as finalization has been deprecated for removal in a future release. For more information about finalization and its flaws, see JEP 421. Even if an application doesn’t implement any finalize() methods, it may rely on third-party libraries that does. Static analysis of third-party libraries using
jdeprscan –for-removal
can be used to list those classes, but it will not tell if they are being used. For example, an application may be missing a call to a close() method, so the resource is cleaned up by the finalizer, which is sub-optimal. -
Rule that detects GC Inverted Parallelism, inspired by the “Inverted Parallelism” analysis in Garbagecat. See JMC-8144 for more information.
Support for the new JPLIS agent events
There is now a new page and rule for loaded JPLIS agents. See JMC-8054 for more information.
Fixed issues
Issue ID | Description |
---|---|
JMC 9 release notes |
|
2023-12 target platform needs update to take org.eclipse.ui.themes |
|
Update to release splash |
|
Upgrade to Eclipse 2023-12 |
|
[Accessibility]: 'Click here to start using JDK Mission Control' button does not have any function to open JDK mission control |
|
Update OptionsCheckRule to JDK21 |
|
Fix update-site not working |
|
Fix dark mode |
|
Support the new JPLIS agent events |
|
openUncompressedStream supports compressed inputs on all streams |
|
Fix test failure in core due to missing new File Force rule in newly added JFRs |
|
Support monitor inflation event in JMC |
|
Support new nio events in JDK 10. |
|
JfrRulesReport.printReport does not respect verbosity for text and json |
|
Some JMX attributes are missing unit specifications in the Console |
|
Move rjmx bundle from application to core |
|
SpotBugs entry in .gitignore hides flightrecorder.configuration files |
|
Cleanup project files after JMC-7307 |
|
Add GitHub action to verify copyright year |
|
Duplicate headers when copying thread dump text to clipboard |
|
Add rule to detect GC Inverted Parallelism |
|
Move org.openjdk.jmc.flightrecorder.configuration bundle from application to core |
|
Event browser should be able to search and show event type ids |
|
Upgrade Jetty to version 10.0.17 |
|
Add tool to simplify platform upgrades |
|
Add an export option for Stacktraces in collapsed format |
|
Build JMC for Linux aarch64 |
|
Use ProcessHandle API to get PIDs |
|
Update to Eclipse 2023-09 8131: Fix UTFStringParser compile error |
|
Remove redundant semicolons |
|
Update the developer guide for latest Eclipse |
|
Use StandardCharsets where possible |
|
Fix the release notes generator |
|
Add user configuration for delay between JVM discovery and attachment |
|
Fix typos |
|
Clean up the swing initialization code |
|
Graphical rendering of dependency view fails due to heap memory drain |
|
JMC should fail properly when executed with <17 JDK |
|
Flamegraph model creation performance improvements |
|
Enhance JMC configuration |
|
Typo in agent wizard |
|
mvn clean install on JMC Core fails if path contains space |
|
build{.sh,.bat} fail to detect started p2 jetty process |
|
Make JfrWizardTest.verifyMinimalRecordingEventSettings work again |
|
Add user configuration for local JVM refresh interval |
|
Automated analysis page does not expand the results for Windows |
|
Add ignore icon to automated analysis table |
|
JVM System information tables do not scroll horizontally |
|
Remove obsolete checkformatting step in GHA |
|
Fix project setup of uitests/org.openjdk.jmc.test.jemmy |
|
Refactoring for jmc/application |
|
EventTemplateTest fails for JDKs with custom jfr profiles |
|
Update org.openjdk.jmc.flightrecorder.rules.test/.classpath after JMC-8086 |
|
Add support for enabling jfr on native images |
|
Some refactoring for jmc/core |
|
Rules dependant on GarbageCollectionInfoRule throw NPE if there is no gcInfo |
|
Enhancements for agent pom |
|
Provide an alternative Java based flamegraph visualization |
|
ThreadView : arrow up/down doesn’t work |
|
Rule that looks at G1 MMU Information |
|
Add ctrl+a keyboard shortcut to select all lanes on jfr threads page |
|
Updates for releng projects |
|
Improvement in stacktrace view for Duration |
|
Issue in Dev environment due to maven-checkstyle-plugin |
|
Improve Eclipse development experience |
|
Rule result visibility not always toggleable in Results Page |
|
Bump some maven plugins and fix warnings |
|
Cleanup after latest refactorings |
|
Move non-Eclipse dependant classes from org.openjdk.jmc.ui.common to org.openjdk.jmc.common |
|
Move to JDK 17 leftovers |
|
Unnecessary imports should fail the build |
|
JMC Automated Analysis should improve the messages when ignoring to evaluate some rules. |
|
Move JMC 9 to JDK 17 |
|
Support checkpoint event sizes beyond u4 limit |
|
Remove socket read illegal value |
|
Upgrade to 2023-03 |
|
JMC Automated Analysis Page shows blank |
|
build.bat --packageAgent doesn’t detect failed builds |
|
IMCFrame Type cache not synchronized |
|
Cleanups in configuration.test and graphview.test |
|
retransformClasses() doesn’t retransform all needed classes |
|
Agent throws exceptions on missing or empty descriptions |
|
Upgrading D3 from v6 to v7 |
|
JfrRulesReport -format json produce incomplete results |
|
Factor out commonly used test helper classes from org.openjdk.jmc.common.test into dedicated test library module |
|
Upgrading Jakarta Mail in JMC |
|
Update Java version in GHA workflow to 11.0.18 |
|
Remove the Twitter plug-in |
|
JfrRulesReport -format xml produce incorrect results |
|
Automated Analysis taking very long time to produce results for Class Leak Rule and showing wrong results. |
|
Rule for FinalizationStatistics |
|
GcFreedRatio rule doesn’t have all preferences in preferences list |
|
Upgrading spifly and jetty project version |
|
Upgrade to 2022-12 |
|
Reduce allocation rate in ParserStats |
|
Add new metric prefixes |
|
Better DisjointBuilder performance for events not ordered by event end attribute |
|
Maximum Young Gen Size is displaying the min in GC config Page |
|
Reduce allocations of Double during chunk loading |
|
core/common.test is not running any tests |
|
Avoid throwing NoSuchFieldException in ValueReaders$ReflectiveReader |
|
Bump Agent build to Java 11 compliance and cleanup POM |
|
Check in launcher for JVMKeepAlive |
|
Fixes for Graphview and Flameview projects |
|
Fix manifest making the Eclipse IDE unhappy |
|
Cleanup of JDK dependencies in JMC tycho build |
|
Upgrade the trunk to 9 |
|
Avoid volatile writes for default field values |
|
Upgrade to Eclipse 2022-09 |
Known issues
Issue ID | Description |
---|---|
Figure out why the graph view doesn’t work on Windows |
|
JMC Connects to self when tried to connect to Unsupported JVMs |
Installation Instructions
If you get an alert that states A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run JMC
or Failed to create the Java Virtual Machine
, you need to update your Java runtime.
Azul Mission Control 9.0.0 and newer, requires OpenJDK 17 and later. However, it supports Java Management Console (JMX) monitoring and Java Flight Recorder (JFR) profiling of JVMs (JDK 7u40 and later) on any supported platform.