JavaTM Virtual Machine Technology
The JDKTM provides one or more implementations of the JavaTM virtual machine (VM):
On platforms typically used for client applications, the JDK comes with a VM implementation called the Java HotSpotTM Client VM (client VM). The client VM is tuned for reducing start-up time and memory footprint. It can be invoked by using the
-clientcommand-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
-servercommand-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.
Some operating characteristics of the Java HotSpot VM can be controlled by the use of command-line flags.
- Standard HotSpot VM Options for Microsoft Windows | Solaris and Linux Operating Environments - The command-line options supported by the Java HotSpot VMs are described on the reference pages for the Java application launcher.
- Non-standard Java HotSpot VM Options - Non-standard options recognized by the current implementations of the VMs, but not necessarily by future or non-Sun implementations, are described on this web page.
Enhancements in JDK 6:
Enhancements in JDK 5.0:
- DTrace Probes
- Garbage Collection Enhancements
Enhancements in J2SE 1.4.x:
- Class Data Sharing
- Server-Class Machine Detection
- Garbage Collection Ergonomics
- Thread Priority Changes