Java Advanced II: High Performance Java

Java Advanced II: High Performance Java

This course focuses on improving the performance of Java applications: identifying bottlenecks, approaches / methods for improving performance, and tools / libraries to achieve high performance.

40 hours
Course type
40 hours
Training for 7-8 or more people? Customize trainings for your specific needs
Java Advanced II: High Performance Java
40 hours
€ 850 *
Training for 7-8 or more people? Customize trainings for your specific needs


This course focuses on improving the performance of Java applications. The training covers various approaches to profiling, finding bottlenecks, tuning a virtual machine, setting JVM flags, serialization and caching libraries, off-heap data storage, benchmarking, memory monitoring / tuning, and other topics.

After completing the course, a certificate
is issued on the Luxoft Training form


To introduce students to modern approaches for improving Java application performance.

Target Audience

  • Java developers
  • Java architects


Good knowledge of Java


Module 1: Performance tuning overview [6h]

  • Common practices
  • Tuning strategies
  • Performance metrics (latency, throughput, bandwidth)
  • How to improve performance
  • Tools for performance measurement
  • JMeter
  • Writing load tests with JMeter
  • How to improve database performance
  • How to improve performance via architecture: streams, queues, microservices, clouds
  • Common best practices for improving code performance [Homework 3h]

Module 2: GC algorithms [6h]

  • Usage of memory by Java objects
  • Common approaches and algorithms of garbage collectors
  • Serial GC garbage collector
  • Parallel GC garbage collector
  • CMS garbage collector
  • G1 garbage collector
  • Shenandoah garbage collector
  • Garbage collectors tuning
  • Instruments to gather metrics of garbage collection
  • How to select the optimal garbage collector

Module 3: HotSpot JIT compiler [5h]

  • JIT compilation
  • Java byte code
  • Tiered compilation
  • Code cache and tuning
  • Code optimizations
  • Code deoptimization (and when it happens)
  • JITWatch instrument to analyze compiling results
  • Types of optimization
  • Speculative optimizations
  • Compiler tuning
  • AOT compilation
  • GraalVM [Homework 2h]

Module 4: JVM flags [3h]

  • Purpose and categories of JVM flags
  • Common flags
  • String-related flags
  • Memory management flags
  • Safepoints and related flags
  • TLABs and related flags
  • JVM tuning plan

Module 5: Java benchmarking with JMH [2h]

  • What is benchmarking?
  • Introduction to JMH
  • API of JMH
  • Untrivial examples
  • JMH practice [Homework 2h]

Module 6: Using off-heap memory and efficient data structures [4h]

  • What is sun.misc.Unsafe?
  • Unsafe methods
  • Native memory performance
  • Creation of data structures in native memory
  • Measurements of performance of native memory (and comparison with memory on heap)
  • Primitive collections
  • Denormalization of data
  • Foreign Memory Access API [Homework 2h]
  • Module 7: Serialization and networking [3h]
    • JSON serializers (GSON, Jackson)
    • Binary serializers (Protobuf, Jackson Smile, Kryo, FST, One NIO)
    • Performance comparison of various serializators
    • Networking performance when connecting using various protocols: HTTP/REST, TCP, Async TCP, RSocket, Netty server/client

  • Module 8: Java profiling [5h]
    • When and how to do profiling
    • Sampling and instrumenting profilers
    • Using Java VisualVM for profiling
    • Profiling with Spring AOP
    • Profiling with IDEA and async profiler
    • Java Flight Recorder
    • Analysis of Java Flight Recorder logs using Mission Control
    • Create and log custom JFR events
    • Using Java agents injected into code (to record events in Java Flight Recorder)
    • Writing programs for automatic analysis of JFR logs
    • Collecting and analyzing SQL queries using JFR
    • Collecting and analyzing REST requests using JFR
    • Application Performance Management tools
    • Using Glowroot for SQL queries and REST requests profiling and analysis [Homework 2h]

    Module 9: Monitoring and analysis of heap data / Memory leaks [3 hours]

    • Tools for analyzing heap memory
    • Signs of memory leaks
    • Main causes of memory leaks
    • Search and detection of memory leaks
    • Weak and phantom references
    • IDEA tools to analyze heap dumps
    • Async profiler to analyze memory consumption
    • Using VisualVM profiler generations count to detect a memory leak
    • Using MissionControl/JFR for automatic memory leaks analysis
    • Eclipse Memory Analyser – denominators and heap analysis

    Module 10: Java caching [3 h]

    • Caching patterns
    • HTTP caching
    • Creating intermediate cache with nginx
    • Caching libraries configuration
    • Popular caching libraries: EhCache, Caffeine
    • Service level caching
    • Caching Spring Services
    • Input/Output bufferin
    • Processor caches and contiguous memory
    • JPA/Hibernate caching
    • Using caches on different layers of application

    Total: theory 40h (100%), homework 11h (+28%)

    Courses you may be interested in
    Java Advanced: Functional, Asynchronous, and Reactive Programming
    This training focuses on the contemporary functional, asynchronous, and reactive approaches to Java development. It covers the examination of NIO2, CompletableFurure, RxJava, Reactor, R2DBC, SSE, Spring Data reactive, WebClient, reactive We
    36 hours
    Code Refactoring for Java
    This course deals with the concept of refactoring as a way of preventing software rot. It describes various “smells” indicating that code needs refactoring, explains which refactoring types best suit specific situations, and describes the w
    24 hours
    Still have questions?
    Connect with us