Java Performance

Distilled approaches and techniques for improving performance

Overview

This course is targeted at experienced Java developers who want to get the best performance out of their applications. It distils the approaches and techniques used to measure performance, correctly identify performance issues and remove performance bottlenecks.

Outline

Introduction

  • An overview of common performance terms and concepts
  • Approaches to addressing performance problems and improving performance
  • A summary of the most common performance issues in Java

Measuring performance

  • Monitoring vs. Profiling
  • Collecting statistics
  • Visualizing statistics
  • Micro-benchmarking

Platform basics

  • Overview of modern hardware and CPU design
  • Pros/Cons of Batching, Buffering, Caching and Parallelism
  • Overview of common data structures
  • Choosing the best algorithm

The Java Virtual Machine (Memory)

  • Introduction to memory management and object life cycles
  • Overview of major garbage collectors (Serial, CMS, G1GC, Azul)
  • Tools for analysing garbage collection (JHiccup, VisualVM, MAT, etc.)
  • Tuning garbage collection

The Java Virtual Machine (Hotspots)

  • Introducing Hotspots
  • Understanding compilation
  • Common JVM optimisations and how code style can help
  • Concurrency and the impact of common JVM options (UseNuma, UseBiasLocking, EscapeAnalysis, etc.)
  • Tools for identifying slow, expensive methods and thread contention (VisualVM, profilers, etc.)

Platform advanced concepts

  • Platform memory models
  • Avoiding contention
  • Processor affinity and context switching

Sign up and stay in the loop

Be the first to know about upcoming workshops, courses, talks and events

Learn more

A great course as usual. Teaching technique is perfect. Just the right amount of examples to exercises. It's a real benefit to expand on my existing java knowledge. These techniques and abilities will be incredibly useful for taking back to my project work