The J2SE Development Kit (JDK) provides one or more implementations of
the Java virtual machine (VM):
On platforms typically used for client applications, the JDK comes with
a VM implementation called the Java HotSpot Client VM (client
VM). The client VM is tuned for reducing start-up time and memory
footprint. It can be invoked by using the -client command-line
option when launching an application.
On all platforms, the JDK comes with an implementation of the Java virtual
machine called the Java HotSpot Server VM (server VM). The
server VM is designed for maximum program execution speed. It can be invoked
by using the -server command-line option when launching an
Some features of Java HotSpot technology, common to both VM implementations,
are the following.
Adaptive compiler - Applications are launched using a standard
interpreter, but the code is then analyzed as it runs to detect performance
bottlenecks, or "hot spots". The Java HotSpot VMs compile those performance-critical
portions of the code for a boost in performance, while avoiding unnecessary
compilation of seldom-used code (most of the program). The Java HotSpot
VMs also uses the adaptive compiler to decide, on the fly, how best to optimize
compiled code with techniques such as in-lining. The runtime analysis performed
by the compiler allows it to eliminate guesswork in determining which optimizations
will yield the largest performance benefit.
Rapid memory allocation and garbage collection - Java HotSpot
technology provides for rapid memory allocation for objects, and it offers
a choice of fast, efficient, state-of-the-art garbage collectors.
Thread synchronization - The Java programming language allows
for use of multiple, concurrent paths of program execution (called "threads").
Java HotSpot technology provides a thread-handling capability that is designed
to scale readily for use in large, shared-memory multiprocessor servers.
New Features and Changes
The following are some of the recently added features in the
Java HotSpot VMs.
Some operating characteristics of the Java HotSpot VM can be
controlled by the use of command-line flags.
The command-line options supported by the Java HotSpot VMs are
described on the reference pages for the Java application launcher
(Microsoft Windows | Solaris Operating Environment | Linux). Non-standard options recognized by the current
implementations of the VMs, but not necessarily by future or non-Sun
implementations, are described on the Java HotSpot VM Options web page.
The following additional documentation is available on the
Sun web site.