A working knowledge of basic Java programming techniques
Having problems? check the errata for this course.
1 |
Introduction |
Preview
10m 11s |
|
What we mean by performance, versions of Java, and the JVM, and an outline of the course. | |||
2 |
JIT compilation |
Watch
37m 14s |
|
What happens when our application runs, and how to monitor and tune the code cache. | |||
3 |
Selecting the JVM |
Watch
23m 4s |
|
How to pick the right JVM (32 bit or 64 bit) for optimal performance, and tuning when native code compilation takes place. | |||
4 |
Introduction to how memory works |
Watch
22m 0s |
|
The roles of the stack and the heap for storing primatives and objects. | |||
5 |
Passing objects between methods |
Watch
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. | |||
6 |
Memory Exercise 1 |
Watch
10m 22s |
|
Exercise to test our knowledge of how memory works in Java. | |||
7 |
Escaping references |
Watch
44m 0s |
|
Understanding what escaping reference are and the performance impact of strategies to remove them. | |||
8 |
Memory Exercise 2 |
Watch
12m 17s |
|
Exercise to find and fix escaping references | |||
9 |
The Metaspace and JVM optimisations |
Watch
20m 24s |
|
The role of the metaspace, and some optimisations that the JVMs make for managing memory. | |||
10 |
Tuning the JVM's memory settings |
Watch
30m 1s |
|
Tuning the heap size, and string pool table. | |||
11 |
Introducing garbage collection |
Watch
26m 49s |
|
The general concept of GC, the finalise() method, and trying to force a collection. | |||
12 |
Monitoring the heap |
Watch
22m 59s |
|
We use the JVisualVM tool to monitor the heap and see how it can help us find a soft-leak. | |||
13 |
Analyzing a heap dump |
Watch
8m 31s |
|
We use the Eclipse Memory Analysis Tool to view the contents of the heap. | |||
14 |
Generational GC |
Watch
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. | |||
15 |
Garbage collector tuning & selection |
Watch
35m 58s |
|
Understanding and choosing the different garbage collection algorythms, and tuning the garbage collection process. | |||
16 |
Using a profiler to analyse application performance |
Watch
46m 2s |
|
Using a profiler to understand the performance of an application. | |||
17 |
Assessing Performance |
Watch
26m 1s |
|
Using micro and macro benchmarking to determine whether code changes lead to better or worse performance. | |||
18 |
Benchmarking with JMH |
Watch
13m 20s |
|
Using the JMH tool to create a robust benchmarking environment. | |||
19 |
Performance and benchmarking exercise |
Watch
21m 6s |
|
We use what we have learned in the last few chapters to improve our project. | |||
20 |
How lists work |
Watch
34m 7s |
|
Understanding how the different list types work in Java, and how the choice of list can affect performance for your application. | |||
21 |
How maps work |
Watch
33m 21s |
|
Understanding how the different map types work in Java, and how the choice of map can affect performance for your application. | |||
22 |
Other coding choices |
Watch
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? | |||
23 |
GraalVM |
Watch
26m 22s |
|
Learn how to use the experimental GraalVM compiler to further optimise your applications, and create native images of your code. | |||
24 |
Other JVM languages |
Watch
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. | |||
25 |
Course Summary |
Watch
3m 1s |
|
A couple of other topics worth mentioning and goodbye. |