Optimising Application Performance

Try for free!

Subscribe and stream all our courses
from just $19.00 per month
Start my free trial

Optimising Application Performance

Java 8 Java 11 Java 17

Learn how to tune the JVM and make good coding choices for optimal performance

Contains 10 hours of video - equivalent to 3 days of live training

  • What can cause performance issues in our applications, and how to resolve them.
  • The choices available to us as developers at design-time - how to make good coding choices for optimal performance.
  • How to configure the virtual machine to provide better performance at run-time.
  • Along the way we'll be learning about the Just In Time compiler, how the virtual machine manages memory, performance testing and benchmarking, decompiling bytecode and more.
  • This course is written for Java versions 8 and 11. We have also revalidated the content for Java 17 - the only differences are that some of the tools are included with the OpenJDK and some are downloadable separately.
  • This course is also available as a book - find out more and download a free preview chapter: Java Application Performance and Memory Management.
A working knowledge of basic Java programming techniques


Having problems? check the errata

Introduction 10m 11s

What we mean by performance, versions of Java, and the JVM, and an outline of the course.


JIT compilation 37m 14s

What happens when our application runs, and how to monitor and tune the code cache.


Selecting the JVM 23m 4s

How to pick the right JVM (32 bit or 64 bit) for optimal performance, and tuning when native code compilation takes place.


Introduction to how memory works 22m 0s

The roles of the stack and the heap for storing primatives and objects.


Passing objects between methods 20m 13s

Variables are passed by value in Java, and for objects this means that it's the reference that is passed across. We understand why this is important and then we also consider the final keyword.


Memory Exercise 1 10m 22s

Exercise to test our knowledge of how memory works in Java.


Escaping references 44m 0s

Understanding what escaping reference are and the performance impact of strategies to remove them.


Memory Exercise 2 12m 17s

Exercise to find and fix escaping references


The Metaspace and JVM optimisations 20m 24s

The role of the metaspace, and some optimisations that the JVMs make for managing memory.


Tuning the JVM's memory settings 30m 1s

Tuning the heap size, and string pool table.


Introducing garbage collection 26m 49s

The general concept of GC, the finalise() method, and trying to force a collection.


Monitoring the heap 22m 59s

We use the JVisualVM tool to monitor the heap and see how it can help us find a soft-leak.


Analyzing a heap dump 8m 31s

We use the Eclipse Memory Analysis Tool to view the contents of the heap.


Generational GC 22m 7s

How the heap is split up into regions to make garbage collection more efficient, and what's really going on when a garbage collection takes place.


Garbage collector tuning & selection 35m 58s

Understanding and choosing the different garbage collection algorythms, and tuning the garbage collection process.


Using a profiler to analyse application performance 46m 2s

Using a profiler to understand the performance of an application.


Assessing Performance 26m 1s

Using micro and macro benchmarking to determine whether code changes lead to better or worse performance.


Benchmarking with JMH 13m 20s

Using the JMH tool to create a robust benchmarking environment.


Performance and benchmarking exercise 21m 6s

We use what we have learned in the last few chapters to improve our project.


How lists work 34m 7s

Understanding how the different list types work in Java, and how the choice of list can affect performance for your application.


How maps work 33m 21s

Understanding how the different map types work in Java, and how the choice of map can affect performance for your application.


Other coding choices 23m 37s

In this chapter we'll find out the answers to: Should you always use a Stringbuilder for best performance? Does a big decimal perform worse than a double? Are streams better than loops?


GraalVM 26m 22s

Learn how to use the experimental GraalVM compiler to further optimise your applications, and create native images of your code.


Other JVM languages 25m 13s

Find out how to evaluate whether kotlin, scala or other JVM language code will be more or less performance by analysing the bytecode it produces.


Course Summary 3m 1s

A couple of other topics worth mentioning and goodbye.

Copyright ©2024 VirtualPairProgrammers.com