JDK Mission Control (JMC) 7 starts with Oracle JDK 8 (64-bit) and later. However, JMC 7 supports Java Management Console (JMX) monitoring and Java Flight Recorder (JFR) profiling of JVMs (JDK 7u40 and later) on any supported platform.
<jdk_installation_path>/bin (or <jdk_installation_path>\bin for Windows) in the PATH environment variable. See Setting the PATH Environment Variable for Windows or your operating system documentation for Linux and macOS.
hsperfdata_username directory is present in the Windows $TEMP directory and is writable by the user.
-Dcom.sun.management.jmxremote
Depending on your platform, run the following commands:
Linux
$ tar zxf jmc-<version>_linux-x64.tar.gz
$ ./jmc-<version>_linux-x64_bin/bin/jmc
For example:
$ tar zxf jmc-7.1.2_linux-x64.tar.gz
$ ./jmc-7.1.2_linux-x64/bin/jmc
macOS
$ tar zxf jmc-<version>_osx-x64_bin.tar.gz
$ open ./jmc-<version>_osx-x64_bin/JDK\ Mission\ Control.app/
For example:
$ tar zxf jmc-7.1.2_osx-x64_bin.tar.gz
$ open ./jmc-7.1.2_osx-x64_bin/JDK\ Mission\ Control.app/
Or
Double-click JDK Mission Control from Finder or drag JDK Mission Control.app to the Applications directory to access from Launchpad.
Windows
jar xvf "jmc-<version>_windows-x64.zip"
".\jmc-<version>_windows-x64\bin\jmc.exe"
For example:
jar xvf "jmc-7.1.2_windows-x64.zip"
".\jmc-7.1.2_windows-x64\bin\jmc.exe"
Or
Double-click jmc.exe from Windows Explorer.
If there are multiple JDK versions installed, it is recommended to use the latest version of JDK to run JMC.
Edit the JMC launch configuration (jmc.ini) file and add the location of the JDK version to use (JDK 8 (64-bit) or later required). In Windows and Linux, the jmc.ini file is found under the bin directory; and in macOS, under JDK\ Mission\ Control.app/Contents/Eclipse directory.
Add the -vm flag and <JDK installation path>/bin (<JDK installation path>\bin for windows) as shown in the following example. Ensure it is added just before the -vmargs flag.
Windows
-vm
C:\Program Files\Java\jdk-11.0.7\bin
-vmargs
macOS
-vm
/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin
-vmargs
Linux
-vm
/usr/java/jdk-11.0.7/bin
-vmargs
Below is a sample of jmc.ini from the Windows platform:
-startup
plugins/org.eclipse.equinox.launcher_1.5.300.v20190213-1655.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1000.v20190125-2016
--launcher.appendVmargs
-vm
C:\Program Files\Java\jdk-11.0.7\bin
-vmargs
-XX:+IgnoreUnrecognizedVMOptions
-XX:+UnlockDiagnosticVMOptions
-XX:+DebugNonSafepoints
-XX:FlightRecorderOptions=stackdepth=128
-XX:+FlightRecorder
-XX:StartFlightRecording=name=JMC_Default,maxsize=100m
-Djava.net.preferIPv4Stack=true
-Djdk.attach.allowAttachSelf=true
--add-exports=java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-exports=java.management/sun.management=ALL-UNNAMED
--add-exports=java.management/sun.management.counter.perf=ALL-UNNAMED
--add-exports=jdk.management.agent/jdk.internal.agent=ALL-UNNAMED
--add-exports=jdk.attach/sun.tools.attach=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED
--add-exports=java.desktop/sun.awt.windows=ALL-UNNAMED