Set the maximum committed heap size for the JVM.
-agentlib:<agent>, -agentpath:<path to agent>
Specify a JVM Tooling Interface (JVMTI) agent to attach to the process being
started. Agents are typically used for instrumentation or monitoring.
Generate additional output, sometimes useful for debugging.
The HotSpot VM contains two separate JIT compilers—known as the client (or C1)
compiler and the server (or C2) compiler. These were designed for different
purposes, with the client compiler offering more predictable performance and
quicker startup, at the expense of not performing aggressive code optimization.
Traditionally, the JIT compiler that a Java process used was chosen at process
startup via the -client or -server switch. However, as hardware advances have
made compilation ever cheaper, a new possibility has become available—to use the
client compiler early on, while the Java process is warming up, and then to switch to
the high-performance optimizations available in the server compiler when they are
available. This scheme is called Tiered Compilation, and it is the default in Java 8.
Most processes will no longer need explicit -client or -server switches.
P r o i l e s
On the Windows platform, a slightly different version of the java executable is
often used— javaw . This version starts up a Java Virtual Machine, without forcing a
Windows console window to appear.
In older Java versions, a number of different legacy interpreters and virtual machine
modes were supported. These have now mostly been removed, and any remaining
should be regarded as vestigial.
Switches that start with -X were intended to be nonstandard switches. However, the
trend has been to standardize a number of these switches (particularly -Xms and
-Xmx ). In parallel, Java versions have introduced an increasing number of -XX :
switches. These were intended to be experimental and not for production use. How‐
ever, as the implementations have stabilized, some of these switches are now suit‐
able for some advanced users (even in production deployments).
In general, a full discussion of switches is outside the scope of this topic. Configura‐
tion of the JVM for production use is a specialist subject, and developers are urged
to take care, especially when modifying any switches related to the garbage collec‐