Courses – Java Performance Measurement and Analysis

“Is my application performing well? Where should I focus my efforts to improve its performance?”

Our Java Performance Measurement and Analysis course will show you how to systematically approach these questions and quickly identify the likeliest path to improvement. This course will teach you strategies and tools to analyse the root cause of Java performance problems. You will explore:

  • Tools and techniques for pinpointing bottlenecks
  • Performance analysis methodology
  • How to understand application and system metrics
  • Advanced JVM profiling methods (perf/async-profiler/Oracle Studio/JMC/bcc tools)
  • System monitoring tools (focusing on the Linux command line tools at a developer level)

Further, you will learn how to prevent performance crises and how to continuously manage application performance by:

  • Designing, implementing, and reasoning about performance experiments
  • Tracking performance changes to key metrics
  • Detecting performance regressions

The course covers both theory and practice of Java performance engineering. In lectures, you’ll learn the theory of profiling, JIT compilation, memory management, and JVM application lifecycle. In workshop exercises, you’ll apply a variety of tools and methods to analyse and tune applications closely simulating real-world workloads, running on modern servers. You’ll gain a scientific attitude to performance testing and a critical attitude to experiments and results.

After practising the techniques of the course on the workshop exercises, you’ll be ready to meet any kind of Java performance problem in your own systems.

Characterizing Performance: We will discuss typical performance requirements (throughput, latency, and scalability), and how to use SLAs to specify them. You will learn how to interpret the results given by measurement tools and to apply the statistical methods needed to validate them. Root Cause Analysis: We will explore the relationship between the hardware, the operating system and application code. You will learn the meaning of observable metrics in each area, focusing on JVM memory management and compilation effects on both application and runtime threads. Real World Focus: We will carry out full scale application analysis exercises on relevant HW, tackling the complexities which arise naturally in today’s complex, multi-threaded, distributed systems. Through practice with practical monitoring tools, you will learn strategies for managing and dissecting large profiles.

For maximum benefit from the course, you should be familiar with the Java language and standard libraries, and be comfortable using the Linux command line.

We have no date for the next scheduled delivery of this course. Please contact us at if you’d like to be kept up to date with our plans.

Contact us