Java Performance Analysis and Testing
System performance problems usually appear at inconvenient times – as when a system is due to ship, or at peak load times critical to the business. To be prepared for these situations, you need to understand the factors that affect Java performance, and to be ready with the strategies that will help you to understand and locate performance problems.
This course will teach you these strategies: tools and techniques for pinpointing bottlenecks, tracking performance changes, creating tests for performance regression and analysis, and conducting performance experiments.
The course will cover both the theory and practice of Java performance. In lectures, you’ll learn the theory of profiling, JIT compilation, memory management, NIO and more. In workshop exercises, you’ll apply a variety of tools and methods to analyse and tune applications closely simulating real-world problems, running on virtual and bare metal servers in the cloud.
After practising the techniques of the course on these exercises, you’ll be ready to meet any kind of Java performance problem in your own systems.
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.
Characterizing Performance: 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. We will expand on performance experiments validity and testing strategies for reducing scope of investigation (sources of variance and complexity and how to avoid 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.