Description
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
JVM Profiling
- Overview of Profiling Tools
- Profiling Flags
- Heap Dump Analysis
- Thread Stack Analysis
Java Garbage Collectors Overview
- Serial GC
- Parallel GC
- G1 GC
- ZGC
- Shenandoah GC
- Epsilon GC
JVM Tuning Flags
- Memory Tuning
- GC Tuning
- JIT Tuning
Performance Programming Tips & Tricks
JVM Ergonomics for Containers
JVM Start-up time improvements (this is optional, only if there is a specific interest)
- AOT compilation
- Dynamic Class Data Sharing (Dynamic CDS)
- Coordinated Restore at Checkpoint (CRaC)
Recommended OS: Linux
Among tools/libraries used: JDK Mission Control (JMC) with JDK Flight Recorder, async-profiler, Java Microbenchmark Harness (JMH), Eclipse Memory Analyzer, jcmd
Duration
- 16 hours
- Java developers
- Technical leaders
- Software architects
- Any software engineer with an interest in or focus on performance optimisations
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:
Enroll
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.