Print All JVM Flags

71,736

Solution 1

Do not miss also -XX:+JVMCIPrintProperties for Graal JIT options.

Before dive into sources you can skim over following extracts and find suitable option faster:

https://chriswhocodes.com/ (OracleJDK 6/7/8/9/10/11/12, OpenJDK 8/9/10/11, Graal CE/EE, OpenJ9, Zing)

http://jvm-options.tech.xebia.fr/

http://www.pingtimeout.fr/2012/05/jvm-options-complete-reference.html

http://stas-blogspot.blogspot.com/2011/07/most-complete-list-of-xx-options-for.html

Solution 2

The best documentation I've found is the source.

I've used this SO Q&A to create a debug build. With this debug build, you can run java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version.

From the directory with the sources, you could execute (assuming you are using Linux, Cygwin or the like):

grep -FR 'UnlockExperimentalVMOptions' hotspot/

Or, the following (which only looks at *.cpp and *.hpp files):

find hotspot/ -name '*.[ch]pp' -exec grep -F 'UnlockExperimentalVMOptions' {} +

Then look at the source files. Probably the best reason why there is no one document that describes all options is that some of these options are better left to those who really understand the JVM and the best way to do that is to become intimately familiar with the source code.

So, in the words (almost) of a great master, use the source!

Share:
71,736

Related videos on Youtube

Sachin Bhansali
Author by

Sachin Bhansali

Updated on May 20, 2020

Comments

  • Sachin Bhansali
    Sachin Bhansali about 4 years

    Found an interesting JVM Flag :

    java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
    

    It prints hundreds of various options, I never heard about before. It also prints default values, that helps diagnose JVM behaviors better. Another interesting flag is:

    -XX:+UnlockExperimentalVMOptions
    

    Does anyone knows of any documentation which explains each one of them ?

    • user1329572
      user1329572 about 12 years
    • Voo
      Voo about 12 years
      The reason that commandline isn't listed in the documentation is, because as the name says it's there to diagnose the VM. It can be assumed that the people debugging hotspot probably know them ;)
    • sactiw
      sactiw over 7 years
      this link explains these options in short and pretty well.
  • Pyrolistical
    Pyrolistical about 12 years
    The source is by definition perfect documentation of the program. Also see codinghorror.com/blog/2012/04/…
  • Go Dan
    Go Dan about 12 years
    @Pyrolistical Thanks for the link; good read and I did not know Jeff Atwood recently blogged about read the source.