JDK Mission Control is a tools suite for monitoring, managing and profiling Java applications running in production.
Here is a list of resources you may want to consult when you have questions regarding Java Mission Control:
1. There is help included in Java Mission Control. The Mission Control FAQ included in the help is very useful for trouble-shooting common problems.
2. This FAQ.
3. Posting questions to the Oracle forum may help: https://community.oracle.com/community/groundbreakers/java/java_hotspot_virtual_machine/java_mission_control.
4. This blog regularily posts on Mission Control related topics: http://hirt.se/blog/?cat=3.
5. The official twitter handle is @javamissionctrl. Also, @hirt often posts JVM and Mission Control related information.
6. There is a Facebook community page here: https://www.facebook.com/javamissionctrl/.
Q&A
Q: I am having problems building JMC core, more specifically with the JDP tests.
A: You may need to ask a local multicast route like so:
route add -net 224.0.0.0 netmask 240.0.0.0 dev lo
Q: I cannot see any locally running JVMs in the JVM browser!
A1: Are you running in Eclipse? If so, make sure you run your Eclipse on a JDK, NOT a JRE!
A2: You should have a directory named hsperfdata_<user> in your tmp directory, where <user> is your login. (On windows you should be able to find this folder under C:\Users\myuser\AppData\Local\Temp\hsperfdata_myuser.) Make sure that the directory can be written to. Also make sure that you are using a file system that supports ACLs.
Q: I cannot access the Flight Recorder!
A1: Make sure you are trying to connect to a 7u40 or later.
A2: If running with an Oracle JDK < 11, ensure you have started the JVM you are trying to start recordings on with the proper flags: -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
Q: How do I install the Eclipse version?
A: Install Eclipse, then install the plug-ins from the update site. Either do that following the instructions in the README.txt and a local build, or from the update site provided by your favorite JMC vendor.
Q: I want to connect to my 64-bit JVM from a 32-bit Mission Control (or vice versa)
A: Start the JMX agent on your JVM by adding the JVM flag -Dcom.sun.management.jmxremote
Q: JMC on Mac OS X does not seem to start anymore.
A: Try removing your ~/.jmc folder. (If you still see this with JMC 5.3.0 or later, please let us know.)
Q: Why are there no I/O events in my JFR recording?
A1: Was the recording done with JDK 8u0? The I/O events are not included in JDK 8 GA. They exist in JDK 7u40, and were reintroduced in the JDK 8u20 release.
A2: Did you disable the I/O events in your template?
Q: I've installed plug-ins in the JMC application, why can't I use them?
A: If you're using JMC 5.3, see the JMC 5.3 Release Notes for a work around. This should not happen in 5.4.0 or later.
Q: Why do I get a lot fewer method samples then I expected?
A1: There's a bug in 7u60 (Linux only) that results in a large reduction of method samples. It's been fixed 7u71 and 8u20.
A2: Flight Recorder does not sample threads that are running native code.
Q: JMC crashes or hangs on Linux
A: This can be a known JavaFX/GTK related issue (https://bugs.openjdk.java.net/browse/JDK-8089584), try setting this environment variable: SWT_GTK3=0
Q: Error message "Could not start JDP. Can't assign requested address"
A: Workaround: add "-Djava.net.preferIPv4Stack=true" to the JVM flags used to start JMC or Eclipse.
Q: I cannot connect
A: Consider the following:
- Are you using the correct protocol?Ensure that you are using the same version of the JVM that you want to monitor as is being used by the JVM running the JMC client.The format of the service URL is:
service:jmx:rmi:///jndi/rmi://<hostname>/jmxrmi - Are the correct ports opened?Note that running JMX over RMI requires two ports and that one of the ports will not be known beforehand.
- Is the communication caught in a firewall? For more information, see "Java Mission Control Communications" in the Introduction to Java Mission Control on the Oracle Technology Network.
Q: When attempting to connect to a JVM, I get a stack trace indicating that the JVM attempts to communicate with a strange IP or host name. What does this mean?
A: Sometimes RMI can have a problem determining which address to use. This can happen because of any of the following:
- There are access restrictions in the Security manager.
- The machine is multihomed and RMI is selecting the wrong interface.
- There is a misconfigured hosts file or a number of different network related configuration problems.
If all else fails, you can try specifying the java.rmi.server.hostname system property on the JVM you are trying to connect to. Note that this can affect applications running on that JVM.
Q: I am getting exceptions during startup about classes not being found. What is wrong?
A: Ensure that you are using JAVA_HOME/bin/jmc to start the JMC client.
Q: Why does Java Mission Control fail to find any local JVMs?
A: Consider the following:
- Make sure that you are using
JAVA_HOME/bin/jmc
to start the JMC client. - If you are running JMC from Eclipse, make sure that Eclipse is running on a JDK (not JRE).
- Make sure that there is a directory named
hsperfdata_username
in the system'stmp
directory, that it is writable by the user running JMC, and that the file system supports access control lists (ACLs).
Also, see the last chapter in the documentation included with JMC.