Java™ Virtual Machine Technology
The 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
application.
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
use 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.
Tools
Some operating characteristics of the Java HotSpot VM can be
controlled by the use of command-line flags.
Enhancements
Enhancements in JDK 7:
Enhancements in JDK 6:
Enhancements in JDK 5.0:
Enhancements in J2SE 1.4.x:
More Information