< session />

Keeping Your Java Hot by Solving the JVM Warmup Problem

Tue, 22 April

Java bytecodes and class files deliver on the original vision of "write once, run anywhere." The Just-in-Time (JIT) compiler enables JVM-based applications to compile code that’s frequently used and optimize it based on how it’s being executed. Techniques like speculative optimization often outperform static Ahead-of-Time (AOT) compiled code. However, this flexibility comes at a cost—each time the JVM starts, it must perform analysis to find hot spots and compile them, leading to warmup time.

In this session, we’ll explore several approaches to alleviate or eliminate the JVM warmup problem:

  • Static compilation of Java code AOT: We'll discuss the GraalVM native image approach.
  • Generating a JIT compiler profile: How to profile a running, warmed-up application and reuse it on restart, reducing the need for repeated JIT compilation. We’ll include the work of OpenJDK Project Leyden.
  • Decoupling the JIT compiler from the JVM for cloud environments: Centralized JIT-as-a-Service that caches compiled code and offloads compilation when needed.
  • Creating a checkpoint of a running application: Using Project CRaC (Coordinated Restore at Checkpoint) to capture the application state, including the heap, stack, and JIT-compiled code.

By the end of this session, you’ll be equipped with practical techniques to keep your Java applications running hot and optimize their performance.

Target Audience: This session is primarily aimed at Java Developers and Back-end Engineers who need to improve the performance of JVM-based applications by addressing warmup time issues. Software Architects will also benefit, as understanding these performance optimizations is critical for designing high-performing, scalable systems in cloud environments. OpsTech Professionals may find value in learning how to apply these techniques to optimize performance in production environments, especially for cloud-based or containerized applications.

< speaker_info />

About the speaker

Simon Ritter

Deputy CTO, Azul Systems

Simon Ritter is the Deputy CTO of Azul.  Simon joined Sun Microsystems in 1996 and spent time working in both Java development and consultancy.  He has been presenting Java technologies to developers since 1999 focusing on the core Java platform as well as client and embedded applications.  At Azul, he continues to help people understand Java and Azul’s JVM products.  

Simon is a Java Champion and two time recipient of the JavaOne Rockstar award.  In addition, he represents Azul on the JCP Executive Committee, the OpenJDK Vulnerability Group as well as the JSR Expert Group since Java SE 9.