The Java 2 SDK, Standard Edition, contains two implementations of the Java
virtual machine (VM).
Java HotSpot Client VM
The Java HoSpot Client VM is the default virtual machine of the Java 2 SDK and
Java 2 Runtime Environment. As its name implies, it is tuned for best performance
when running applications in a client environment by reducing application start-up
time and memory footprint.
Java HotSpot Server VM
The Java HotSpot Server VM is designed for maximum program execution speed for
applications running in a server environment. The Java HotSpot Server VM is invoked
by using the -server command-line option when launching an application, as in
java -server MyApp
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 usesthe 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 has a fast, efficient, state-of-the-art
garbage collector.
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.