Visit Azul.com Support

Azul Mission Control 9.0.0

May 29, 2024

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.

Support for Linux/aarch64

Azul Mission Control 9.0.0 is now also available for Linux aarch64.

Support for Dark Mode

Azul Mission Control 9.0.0 supports dark mode. Go to Preferences, General | Appearance, and select the Dark theme to enable.

Configurable JVM Refresh Interval

Previously the JVM Browser checked every 5000 ms for new JVMs. This can now be configured.

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 to org.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 in jmc.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)

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.

Twitter plug-in removed

Due to changes in APIs and cost of maintenance, the Twitter plug-in has been removed.

Fixed issues

Issue ID Description

JMC-8202

JMC 9 release notes

JMC-8173

2023-12 target platform needs update to take org.eclipse.ui.themes

JMC-8172

Update to release splash

JMC-8155

Upgrade to Eclipse 2023-12

JMC-8167

[Accessibility]: 'Click here to start using JDK Mission Control' button does not have any function to open JDK mission control

JMC-8162

Update OptionsCheckRule to JDK21

JMC-8163

Fix update-site not working

JMC-7056

Fix dark mode

JMC-8054

Support the new JPLIS agent events

JMC-8159

openUncompressedStream supports compressed inputs on all streams

JMC-8160

Fix test failure in core due to missing new File Force rule in newly added JFRs

JMC-4263

Support monitor inflation event in JMC

JMC-5560

Support new nio events in JDK 10.

JMC-8156

JfrRulesReport.printReport does not respect verbosity for text and json

JMC-8154

Some JMX attributes are missing unit specifications in the Console

JMC-7069

Move rjmx bundle from application to core

JMC-8150

SpotBugs entry in .gitignore hides flightrecorder.configuration files

JMC-8149

Cleanup project files after JMC-7307

JMC-7449

Add GitHub action to verify copyright year

JMC-4262

Duplicate headers when copying thread dump text to clipboard

JMC-8144

Add rule to detect GC Inverted Parallelism

JMC-7307

Move org.openjdk.jmc.flightrecorder.configuration bundle from application to core

JMC-7192

Event browser should be able to search and show event type ids

JMC-8145

Upgrade Jetty to version 10.0.17

JMC-8129

Add tool to simplify platform upgrades

JMC-7806

Add an export option for Stacktraces in collapsed format

JMC-8120

Build JMC for Linux aarch64

JMC-8127

Use ProcessHandle API to get PIDs

JMC-8126

Update to Eclipse 2023-09 8131: Fix UTFStringParser compile error

JMC-8128

Remove redundant semicolons

JMC-8125

Update the developer guide for latest Eclipse

JMC-8123

Use StandardCharsets where possible

JMC-8124

Fix the release notes generator

JMC-8118

Add user configuration for delay between JVM discovery and attachment

JMC-8122

Fix typos

JMC-407

Clean up the swing initialization code

JMC-7885

Graphical rendering of dependency view fails due to heap memory drain

JMC-8121

JMC should fail properly when executed with <17 JDK

JMC-8112

Flamegraph model creation performance improvements

JMC-7823

Enhance JMC configuration

JMC-8064

Typo in agent wizard

JMC-8117

mvn clean install on JMC Core fails if path contains space

JMC-8116

build{.sh,.bat} fail to detect started p2 jetty process

JMC-8113

Make JfrWizardTest.verifyMinimalRecordingEventSettings work again

JMC-8103

Add user configuration for local JVM refresh interval

JMC-8102

Automated analysis page does not expand the results for Windows

JMC-8101

Add ignore icon to automated analysis table

JMC-7441

JVM System information tables do not scroll horizontally

JMC-8098

Remove obsolete checkformatting step in GHA

JMC-8097

Fix project setup of uitests/org.openjdk.jmc.test.jemmy

JMC-8091

Refactoring for jmc/application

JMC-8096

EventTemplateTest fails for JDKs with custom jfr profiles

JMC-8095

Update org.openjdk.jmc.flightrecorder.rules.test/.classpath after JMC-8086

JMC-8080

Add support for enabling jfr on native images

JMC-8086

Some refactoring for jmc/core

JMC-8093

Rules dependant on GarbageCollectionInfoRule throw NPE if there is no gcInfo

JMC-8090

Enhancements for agent pom

JMC-7894

Provide an alternative Java based flamegraph visualization

JMC-7004

ThreadView : arrow up/down doesn’t work

JMC-5641

Rule that looks at G1 MMU Information

JMC-8082

Add ctrl+a keyboard shortcut to select all lanes on jfr threads page

JMC-8083

Updates for releng projects

JMC-8055

Improvement in stacktrace view for Duration

JMC-8079

Issue in Dev environment due to maven-checkstyle-plugin

JMC-8075

Improve Eclipse development experience

JMC-8073

Rule result visibility not always toggleable in Results Page

JMC-8072

Bump some maven plugins and fix warnings

JMC-8071

Cleanup after latest refactorings

JMC-7308

Move non-Eclipse dependant classes from org.openjdk.jmc.ui.common to org.openjdk.jmc.common

JMC-8070

Move to JDK 17 leftovers

JMC-7457

Unnecessary imports should fail the build

JMC-8050

JMC Automated Analysis should improve the messages when ignoring to evaluate some rules.

JMC-8068

Move JMC 9 to JDK 17

JMC-7993

Support checkpoint event sizes beyond u4 limit

JMC-8065

Remove socket read illegal value

JMC-8057

Upgrade to 2023-03

JMC-8067

JMC Automated Analysis Page shows blank

JMC-8046

build.bat --packageAgent doesn’t detect failed builds

JMC-8063

IMCFrame Type cache not synchronized

JMC-8037

Cleanups in configuration.test and graphview.test

JMC-8045

retransformClasses() doesn’t retransform all needed classes

JMC-8048

Agent throws exceptions on missing or empty descriptions

JMC-8043

Upgrading D3 from v6 to v7

JMC-8041

JfrRulesReport -format json produce incomplete results

JMC-7951

Factor out commonly used test helper classes from org.openjdk.jmc.common.test into dedicated test library module

JMC-8036

Upgrading Jakarta Mail in JMC

JMC-8035

Update Java version in GHA workflow to 11.0.18

JMC-8031

Remove the Twitter plug-in

JMC-7952

JfrRulesReport -format xml produce incorrect results

JMC-7879

Automated Analysis taking very long time to produce results for Class Leak Rule and showing wrong results.

JMC-7514

Rule for FinalizationStatistics

JMC-8006

GcFreedRatio rule doesn’t have all preferences in preferences list

JMC-7998

Upgrading spifly and jetty project version

JMC-7996

Upgrade to 2022-12

JMC-7979

Reduce allocation rate in ParserStats

JMC-7978

Add new metric prefixes

JMC-7950

Better DisjointBuilder performance for events not ordered by event end attribute

JMC-7977

Maximum Young Gen Size is displaying the min in GC config Page

JMC-7944

Reduce allocations of Double during chunk loading

JMC-7946

core/common.test is not running any tests

JMC-7945

Avoid throwing NoSuchFieldException in ValueReaders$ReflectiveReader

JMC-7861

Bump Agent build to Java 11 compliance and cleanup POM

JMC-7538

Check in launcher for JVMKeepAlive

JMC-7941

Fixes for Graphview and Flameview projects

JMC-7940

Fix manifest making the Eclipse IDE unhappy

JMC-7939

Cleanup of JDK dependencies in JMC tycho build

JMC-7935

Upgrade the trunk to 9

JMC-7933

Avoid volatile writes for default field values

JMC-7930

Upgrade to Eclipse 2022-09

Known issues

Issue ID Description

JMC-7003

Figure out why the graph view doesn’t work on Windows

JMC-7071

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.