JMC logo

JDK Mission Control 8 Installation Instructions

JDK Mission Control (JMC) 8.0 and 8.0.1 starts with Oracle JDK 8 (64-bit), and from JMC 8.1.0 onwards it requires Oracle JDK 11 and later. However, JMC 8 supports Java Management Console (JMX) monitoring and Java Flight Recorder (JFR) profiling of JVMs (JDK 7u40 and later) on any supported platform.

Prerequisite

  • Ensure you install JDK 8 for JMC 8.0 and JMC 8.0.1, and JDK 11 or later for JMC 8.1.0 onwards. See: JDK 11 Installation Instructions or JDK 8 Installation Instructions as applicable.
  • Ensure that the hsperfdata_username directory is present in the Windows $TEMP directory (for example, C:\Users\user_name\AppData\Local\Temp\hsperfdata_username) and is writable by the user. In case there are any issues while starting JMC with user permissions, then start JMC as an administrator. Also ensure that you are using a file system that supports ACL.
  • For monitoring or recording a 32-bit JVM (JDK 7u40 and later), start the JVM with the following VM argument:

    -Dcom.sun.management.jmxremote

JMC Usage Instructions

Depending on your platform, run the following commands:

Linux



$ tar zxf jmc-<version>_linux-x64.tar.gz
$ ./jmc-<version>_linux-x64/JDK\ Mission\ Control/jmc
   

For example:



$ tar zxf jmc-8.3.1_linux-x64.tar.gz
$ ./jmc-8.3.1_linux-x64/JDK\ Mission\ Control/jmc
   
   

macOS x64



$ tar zxf jmc-<version>_macos-x64.tar.gz
$ open ./jmc-<version>_macos-x64/JDK\ Mission\ Control.app
   

For example:



$ tar zxf jmc-8.3.1_macos-x64.tar.gz
$ open ./jmc-8.3.1_macos-x64/JDK\ Mission\ Control.app
   

macOS ARM



$ tar zxf jmc-<version>_macos-aarch64.tar.gz
$ open ./jmc-<version>_macos-aarch64/JDK\ Mission\ Control.app
   

For example:



$ tar zxf jmc-8.3.1_macos-aarch64.tar.gz
$ open ./jmc-8.3.1_macos-aarch64/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\JDK Mission Control\jmc.exe"
   

For example:



jar xvf "jmc-8.3.1_windows-x64.zip"
".\jmc-8.3.1_windows-x64\JDK Mission Control\jmc.exe"
   

Or

Double-click jmc.exe from Windows Explorer. 

Specify the JDK Version to be Used by JMC

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 JDK Mission Control 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.19\bin
-vmargs

macOS


  
-vm
/Library/Java/JavaVirtualMachines/jdk-11.0.19.jdk/Contents/Home/bin
-vmargs

Linux


 
-vm
/usr/java/jdk-11.0.19/bin
-vmargs

Below is a sample of jmc.ini from the Windows platform:


  
-startup
plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.500.v20220509-0833
--launcher.appendVmargs
-vm
C:\Program Files\Java\jdk-11.0.19\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
-Dsun.java.command=JMC
--add-exports=java.desktop/sun.awt.windows=ALL-UNNAMED