Performance Testing and Tuning Java Applications

  • 3 Days
  • Intermediate
  • Virtual | Classroom
  • £ On Request

Learn how to test and profile Java applications right down to the hardware level with performance guru Martin Thompson

Book For My Team


This course is aimed at senior developers who want to learn how to make performance testing and profiling an integral part of their approach to CI or Continuous Delivery. Candidates will learn how to micro benchmark components, then assemble them into performance tested services. The pattern repeats until eventually the system as a whole is performance tested.

In parallel with performance testing the candidates will learn how to profile an application at all levels of the stack right down to the hardware level using a combination of tools. By learning how to measure and reason about the computing resource building blocks, the delegates will learn how to construct a model of what performance is possible for a given component or service. This is the essence of Mechanical Sympathy.

The course is a blend of lectures, coding exercises, and workshops. Candidates should bring a laptop capable of running at least 4 threads concurrently, i.e. dual core with Hyperthreading enabled, and a native Linux operating system installed.


Understanding Modern Hardware

  • CPU Pipelines & Instruction Processing
  • Cache Sub-Systems
  • Main Memory
  • PCI-e and NUMA Interconnects
  • Hard Disk Drives
  • Solid State Drives
  • Networking

Computing Resource Fundamentals

  • Memory Latency & Throughput
  • Network Latency & Throughput
  • Storage Latency & Throughput
  • Locks and Condition Variables

Linux Operating System Fundamentals

  • Virtual Memory Management
  • Scheduling
  • File Systems
  • Networking

Java Virtual Machine Fundamentals

  • JIT Compilation
  • Garbage Collectors

Performance Testing Theory

  • Statistics 101
  • Big O Notation & Algorithms
  • Clean Room Experiments
  • Realistic Test Cases
  • Micro Benchmarking
  • Concurrent Testing
  • Service Level Testing


  • Interpreting a Profile
  • CPU Utilisation
  • Object Allocation and Heap Usage
  • Lock Contention
  • Garbage Collection
  • Operating System Tracing
  • Hardware Performance Counters

Development Practices

  • Data Representations
  • Clean Code and Anti-Patterns
  • Performance Testing and CI
  • Team Culture
  • Getting the balance right
  • Telemetry and Instrumentation


Please bring a laptop with native Linux installed and capable of running at least 4 concurrent threads. That is, a quad core or dual core with hyperthreading. You should also have Java 8 and your favourite IDE installed.

About The Trainer

Martin Thompson is one of the world’s foremost experts on concurrency and low-latency software.

Having spent many years designing and developing systems for some of the busiest exchanges in the world, Martin now works as an independent consultant and trainer.

Martin is in huge demand both as a conference speaker and as a trainer, and has been packing in the crowds at JavaOne, QCon, GOTO, and much more besides.

Martin Thompson

Martin Thompson is one of the world’s foremost experts on concurrency and low-latency software.

Follow Martin
For a breakdown of what to expect in our training, check out our training overview page.

Excellent course materials and code examples, helping you to try things for yourself and learn by doing. The course has provided a wealth of useful information. Martin also covered interesting areas on request in order to tailor parts to the interest of participants. The most useful course I've ever done.

Great class. Martin really knows his stuff. He also struck a good balance between talking through concepts and having us do hands-on exercises.

Deloitte logo
Atlassian logo
Workday logo
BMW logo
Amex logo
McAfee logo
PWC logo