Java Performance And Tuning

This course covers topics like JVM architecture, memory allocation and management, Garbage Collector, profiling tools, real world case studies, JDK best practices and benchmarking.
Code: JVA-028
Duration: 16 hours


All Java applications need to be efficient in terms of memory footprint and processing throughput. But allocating a larger amount of memory or switching to a more powerful CPU is not always good approach.

Our Java Performance and Tuning course is an intensive training targeting experienced and advanced software developers who are looking to expand their knowledge in order to discover how to tune Java applications either by choosing the appropriate way of memory allocation, the best Garbage Collector algorithm or the most suitable way of using the JDK API.

Every developer should properly understand how to make a program efficient in terms of memory footprint or performance throughput. He should also have a good understanding about what happens inside the Java Virtual Machine. Knowing all of these issues means that memory allocation challenges or slow processing time can be easily detected and fixed, or prevented.

This course covers topics like JVM architecture, execution engine, memory model, garbage collectors, JVM tuning, JVM profiling and troubleshooting, analyzing case studies from a performance standpoint and presenting performance code best practices (tips and tricks).

The idea behind the course is that in order to be a good developer, writing good code is not enough. You also need to know how to look under the hood and think about how that code could behave better and positively influence performance metrics.


JVM Architecture
  • What is JVM
  • Lifetime of JVM
  • Architecture of JVM
  • Runtime Data Areas

Class Loader
  • Hierarchical model
  • Cyclic delegation trap
  • Class Data Sharing
  • Case Study

Execution Engine
  • Bytecode & Practice
  • Bytecode Interpreter
  • Ahead Of Time Compiler
  • Just In Time Compiler
  • Case Study
  • Sun JVM Source Code & Case Study

Java Memory Structure
  • Stack
  • Code Cache
  • Heap
  • PermGen
  • Metaspace & Compressed Class Space
  • Case Study

Java Garbage Collection
  • Garbage Collection Concepts
  • Heap Allocation Techniques
  • JVM Safepoint
  • HotSpot Garbage Collectors
  • Train Collector
  • Serial Collector
  • Parallel Collector
  • Parallel Compacting Collector
  • Concurrent Mark-Sweep Collector
  • Garbage First Collector
  • Case Study

Garbage Collection Friendly Programming
  • Object Reference Types
  • Strong reference
  • Soft reference
  • Weak Reference
  • Phantom Reference
  • Case Study
  • Memory Leak
  • Case Study

JVM Tuning
  • Tuning Approach
  • Tuning Parameters
  • Case Study

JVM Profiling
  • OS built-in tools (e.g. typeperf, PerfMon, ResMon, vmstat, iostat)
  • JDK Tools (e.g. VisualVM, JMC, jps, jstack, jmap, jstat, jconsole)
  • Case Study
  • Eclipse Memory Analyzer
  • Case Study

Case Study
  • Case Study - Heap Dump Analyzing
  • Case Study - Thread Dump Analyzing

Performance Friendly Programming (Tips & Tricks)
  • Unsafe
  • Synchronization technics
  • Memory Access Patterns
  • Java NIO
  • Exceptions
  • Logging
  • Collections


The aim of this course is to give a better understanding of what the Java Virtual Machine means in terms of:

  • Execution Engine
  • Memory Model
  • Garbage Collectors
  • Performance JDK APIs
  • Performance tactics
  • Profiling tools
  • Troubleshooting techniques
It helps programmers in tuning, profiling and troubleshooting the JVM, by analyzing and understanding dumps (heap, thread) in order to figure out possible processing bottlenecks that might occur

Getting familiar with profiling tools (either OS built-in or provided by JDK) and troubleshooting techniques is another target for the course

Java performance is tightly coupled with a few tactics and JDK APIs every developer should know. The right JDK APIs and tactics are presented to achieve best performance

Target Audience

Advanced or experienced Java developers keen on learning how performance can be achieved or increased by understanding JVM internals, how to tune and profile the JVM and how to write performant code.


Good understanding of Java Core principles
  • Multithreading
  • Collections
  • Object creation lifecycle
  • Garbage Collector principles
Basic understanding of how CPU and Memory works

Schedule in Online Prices
Register for the next course
Registering in advance ensures you have priority. We’ll notify you when we schedule the next course on this topic
Online €350
Bucharest €350
Krakow €350
Wroclaw €350

Invoices for the course will be issued in local currency. All fees above can change according to training location and delivery mode and are subject to change while scheduling. Price does not include VAT.

Sign up

First Name*
Last Name*
Preferred Location
Your Comment
Still have questions?
Connect with us
Thank you.
Your request has been received.