Java Performance Tuning Course


In this Java Performance Tuning Course, the attendees will learn how to develop Java software applications with performance as a first-class quality attribute.

This intensive training targets passionate Java software developers seeking to enhance their proficiency in writing efficient code, optimizing, and profiling Java applications.

The course comprehensively covers key topics including Java Virtual Machine (JVM) architecture, runtime execution engine, memory structure, garbage collectors, JVM tuning, and profiling. Through a combination of lectures, analysis of code samples, and profiling and tuning case studies, participants will gain practical insights into optimizing Java applications.

By the end of this course, participants will:

  • Gain an understanding of both Just-In-Time (JIT) Compiler and Ahead-of-Time (AOT) Compiler, including their pros and cons, which class of problems is more suitable for one versus the other, and how to further optimize the compiler for improved performance.
  • Acquire a basic understanding of available Garbage Collectors (GC), how to choose the most appropriate GC depending on the desired performance metrics (i.e., throughput, latency, or footprint) regarding the hardware resources, as well as how to fine-tune the GC for optimal performance.
  • Develop the skills necessary to diagnose, characterize, and effectively resolve memory, CPU, and I/O-related performance issues using a profiler.
  • Participate in hands-on exercises designed to explore performance tuning techniques for Java applications, applying best practices and strategies to enhance performance.


  • Java Virtual Machine Architecture
  • Execution Engine
    • Template Interpreter
    • C1/C2/Graal JIT Compiler
  • Java Memory Structure
    • Stack
    • Heap
    • Metaspace
    • Compressed Class Space
    • Code Cache
    • Direct Memory
  • Java Garbage Collectors Overview
    • Serial GC
    • Parallel GC
    • G1 GC
    • ZGC
    • Shenandoah GC
    • Epsilon GC
  •  JVM Tuning Flags
    • GC Tuning
    • JIT Tuning
  • JVM Start-up time improvements
    • Dynamic Class Data Sharing (Dynamic CDS)
    • Coordinated Restore at Checkpoint (CRaC)
    • AOT compilation
  • JVM Ergonomics for Containers
  • JVM Profiling
    • Overview of Profiling Tools
    • JVM Profiling Flags
    • Heap Dump Analysis
    • Thread Stack Analysis
  • Performance Programming Tips & Tricks

Recommended OS: Linux

Among tools/libraries used: Java Mission Control (JMC) with Java Flight Recorder, async-profiler, Java Microbenchmark Harness (JMH)


  • 16 hours

Target Audience

  • Java developers
  • JVM performance geeks
  • technical leaders
  • software architects

Attendees’ Feedback

I managed to understand how the JVM and the garbage collector works, I learned to do profiling for applications, I understood how the memory works and I received some tips and tricks to improve myself as a programmer. Overall this training is very useful.
This has been the best course in the Java area I ever attended. The trainer was more than qualified, he organized the course so that it would be easy for attendees of any level, to understand the basic concepts behind the subject.
A lot of useful information about the JVM. All this information can be used in my daily programming activity. Also, I learned new tools that will help me to troubleshoot memory issues in the future.
The training was awesome. It covered things that people don’t usually learn about, but are useful, like JVM internals. The most useful for me was the profiling techniques in the context of all the other JVM internal explanations.
Excellent training, the instructor is very knowledgeable and well-prepared, and has visibly put a lot of effort into organizing the course and creating the course materials.

People from the following companies attended my courses:


Note: At the moment this course is available only for companies, teams, or groups of students. The individual subscription (i.e. single person) is not an option at the moment.