Java Performance Training Course

Course Code



35 hours (usually 5 days including breaks)


Programming in Java.


The course is intended for Java programmers who want to produce efficient applications. After consultation with client, the course can be conducted in a special tool version, for people who only need to detect performance problems (testers, administrators) - in this case programming in Java is not required.

During the training, participants will learn about process and modern tools for producing efficient software in Java. They learn performance-related traps, benchmarking, profiling, tuning, memory analysis, performance tricks using collections or IO. Learned topics and tools are applicable regardless of the technologies used in the project, because we focus on language-level performance, tools and embedded libraries. Tuning discusses parameters of JVM provided by Oracle.

Course Outline

Basics and performance measurements

  • Performance dimensions
  • The process of creating efficient software
  • Factors affecting performance
  • Micro and Macro-Benchmarking
  • Profiling
  • Use of tools: JConsole, Java Visual VM, JMC (Java Mission Control), MAT (memory analysis)

Efficient work on files

  • IO: streams, buffering, RandomAccessFile
  • NIO: channels, memory mapped files
  • NIO.2 (introduction): Path, Files
  • How to increase serialization performance

Working with collections and arrays

  • Computational complexity - how to choose algorithms
  • Recursion, iteration and heuristics
  • Performance for sets, lists, queues, maps
  • Views and Collections class
  • Review of multithreaded collections (java.util.concurrent)
  • Arrays and collections for simple types

JMH - approved microbenchmak framework for Java

  • Creating JMH project and benchmarks
  • Configuration, running, results
  • Concurrent and parameterizable Benchmarks
  • Traps and advanced elements

Class loading

  • Class Class, ClassLoader and class loading process
  • When to control class loading?
  • Delaying class loading and reducing the number of classes
  • Reflection and dynamic proxy
  • Introduction to modules (Java 9)

Memory management in Java

  • Garbage Collector and object life cycle
  • Strong, soft, weak and phantom references
  • Why memory leak occurs and what to avoid in Java
  • Generations and memory spaces
  • Tuning Garbage Collector
  • Types of Garbage Collector: Serial, Parallel, Concurrent, G1
  • Changes in Java 8 and Java 9

Java Virtual Machine

  • Client and server modes
  • Tuning JVM
  • Performance changes from version to version

Introduction to optimization for HTTP (OPTIONAL)

  • Problems with server side optimization
  • Testing with HTTP: HttpUnit, JWebUnit, Selenium
  • Performance measurements for HTTP: Grinder, JMeter
  • Additional information about JMeter

Problems with optimization

  • Micro-benchmarking problems
  • Premature optimization
  • Greed
  • Other bad practices



Related Categories

Related Courses

Course Discounts

Course Discounts Newsletter

We respect the privacy of your email address. We will not pass on or sell your address to others.
You can always change your preferences or unsubscribe completely.

Some of our clients

This site in other countries/regions