Flag data from these commands is printed in one of the two ways shown. The colon in the
first line of included output indicates that a nondefault value is in use for the flag in question.
This can happen for the following reasons:
1. The flag's value was specified directly on the command line.
2. Some other option indirectly changed that option.
3. The JVM calculated the default value ergonomically.
The second line (without a colon) indicates that value is the default value for this version of
the JVM. Default values for some flags may be different on different platforms, which is
shown in the final column of this output. product means that the default setting of the flag is
uniform across all platforms; pd product indicates that the default setting of the flag is
TOO MUCH INFORMATION?
The PrintFlagsFinal command will print out hundreds of available tuning flags for the JVM
(there are 668 possible flags in JDK 7u40, for example).
The vast majority of these flags are designed to enable support engineers to gather more informa-
tion from running (and misbehaving) applications. It is tempting upon learning that there is a flag
called AllocatePrefetchLines (which has a default value of 3) to assume that value can be
changed so that instruction prefetching might work better on a particular processor. But that kind
of hit-or-miss tuning is not worthwhile in a vacuum; none of those flags should be changed
without a compelling reason to do so. In the case of the AllocatePrefetchLines flag, that
would include knowledge of the application's prefetch performance, the characteristics of the
CPU running the application, and the effect that changing the number will have on the JVM code
Other possible values for the last column include manageable (the flag's value can be
changed dynamically during runtime) and C2 diagnostic (the flag provides diagnostic out-
put for the compiler engineers to understand how the compiler is functioning).
Yet another way to see this information for a running application is with jinfo . The advant-
age to jinfo is that it allows certain flag values to be changed during execution of the pro-