Figure 1-3 depicts a process flow showing how the JRockit JVM optimizes code. When the Java application is started, the JRockit JVM runs just-in-time compilation. After compilation, the JVM monitors the Java threads. Then, the JVM runs optimizations that result in highly-optimized machine code.