particular flag in a particular environment given a particular command line. The process of
automatically tuning flags based on the environment is called ergonomics .
CLIENT CLASS AND SERVER CLASS
Java ergonomics is based on the notion that some machines are “client” class and some are “serv-
er” class. While those terms map directly to the compiler used for a particular platform (see
Chapter 4 ), they apply to other default tunings as well. For example, the default garbage collector
for a platform is determined by the class of a machine (see Chapter 5 ).
Client-class machines are any 32-bit JVM running on Microsoft Windows (regardless of the num-
ber of CPUs on the machine), and any 32-bit JVM running on a machine with one CPU (regard-
less of the operating system). All other machines (including all 64-bit JVMs) are considered serv-
The JVM that is downloaded from Oracle and OpenJDK sites is called the “product” build of
the JVM. When the JVM is built from source code, there are many different builds that can
be produced: debug builds, developer builds, and so on. These builds often have additional
functionality in them. In particular, developer builds include an even larger set of tuning
flags so that developers can experiment with the most minute operations of various al-
gorithms used by the JVM. Those flags are generally not considered in this topic.
The Complete Performance Story
This topic is focused on how to best use the JVM and Java platform APIs so that programs
run faster, but there are many outside influences that affect performance. Those influences
pop up from time to time in the discussion, but because they are not specific to Java, they are
not necessarily discussed in detail. The performance of the JVM and the Java platform is a
small part of getting to fast performance.
Here are some of the outside influences that are at least as important as the Java tuning topics
covered in this topic. The Java knowledge-based approach of this topic complements these
influences, but many of them are beyond the scope of what we'll discuss.