Урок 1.00:04:01
What do we mean by performance, and what versions of Java does this course cover
Урок 2.00:01:02
Example code provided with this course
Урок 3.00:01:38
Using different JDK and JVM vendors
Урок 4.00:05:12
The structure of this course
Урок 5.00:01:52
How to get support while you're taking this course
Урок 6.00:03:04
What is bytecode?
Урок 7.00:05:52
The concept of "Just In Time Compilation"
Урок 8.00:03:36
Introducing the first example project
Урок 9.00:05:24
Finding out which methods are being compiled in our applications
Урок 10.00:04:44
The C1 and C2 Compilers and logging the compilation activity
Урок 11.00:06:19
Tuning the code cache size
Урок 12.00:08:30
Remotely monitoring the code cache with JConsole
Урок 13.00:04:33
The differences between the 32 bit and 64 bit JVM
Урок 14.00:06:35
Specifying which compiler to use at runtime
Урок 15.00:02:05
Turning off tiered compilation
Урок 16.00:09:59
Tuning native compilation within the Virtual Machine
Урок 17.00:02:58
Introduction - the structure of Java's memory
Урок 18.00:05:57
How the stack works
Урок 19.00:05:26
How the heap works
Урок 20.00:07:47
The heap and the stack together - an example
Урок 21.00:04:55
What does "passing by value" mean?
Урок 22.00:02:21
What does "passing by reference" mean?
Урок 23.00:04:14
Passing objects into methods
Урок 24.00:03:10
The final keyword and why it's not the same as a constant
Урок 25.00:05:43
Why the final keyword doesn't stop an object's values from being changed
Урок 26.00:01:36
Instructions for the exercise
Урок 27.00:08:47
Walkthrough of the solution
Урок 28.00:05:34
Introduction - what is an escaping reference?
Урок 29.00:07:32
Strategy 1 - using an iterator
Урок 30.00:06:55
Strategy 2 - duplicating collections
Урок 31.00:04:39
Strategy 3 - using immutable collections
Урок 32.00:05:07
Strategy 4 - duplicating objects
Урок 33.00:04:40
Strategy 5 - using interfaces to create immutable objects
Урок 34.00:09:50
Strategy 6 - using modules to hide the implementation
Урок 35.00:04:41
Instructions for the exercise
Урок 36.00:07:40
Walkthrough of the solution
Урок 37.00:05:10
The role of the Metaspace
Урок 38.00:01:59
The PermGen
Урок 39.00:04:15
Are objects always created on the heap?
Урок 40.00:06:09
The String Pool
Урок 41.00:03:04
Interning Strings
Урок 42.00:04:11
How the string pool is implemented
Урок 43.00:11:37
Understanding the size and density of the string pool
Урок 44.00:03:29
Tuning the size of the string pool
Урок 45.00:07:45
Tuning the size of the heap
Урок 46.00:03:07
Shortcut syntax for heap tuning flags
Урок 47.00:04:58
What it means when we say Java is a managed language
Урок 48.00:02:50
How Java knows which objects can be removed from the Heap
Урок 49.00:04:29
The System.gc() method
Урок 50.00:03:53
Java 11's garbage collector can give unused memory back to the operating system
Урок 51.00:02:06
Why it's not a good idea to run the System.gc() method
Урок 52.00:05:18
The finalize() method
Урок 53.00:03:29
The danger of using finalize()
Урок 54.00:08:52
What is a soft leak?
Урок 55.00:06:59
Introducing (J)VisualVM
Урок 56.00:03:00
Monitoring the size of the heap over time
Урок 57.00:04:16
Fixing the problem and checking the heap size
Урок 58.00:03:14
Generating a heap dump
Урок 59.00:05:21
Viewing a heap dump
Урок 60.00:03:54
How the garbage collector works out what is garbage
Урок 61.00:04:07
Why the heap is divided into generations
Урок 62.00:05:01
The Internals of the Young Generation
Урок 63.00:06:11
Viewing the generations in VisualVM
Урок 64.00:03:06
Viewing the heap when there's a soft leak
Урок 65.00:06:28
Monitoring garbage collections
Урок 66.00:05:48
Turning off automated heap allocation sizing
Урок 67.00:04:56
Tuning garbage collection - old and young allocation
Урок 68.00:02:25
Tuning garbage collection - survivor space allocation
Урок 69.00:02:07
Tuning garbage collection - generations needed to become old
Урок 70.00:05:38
Selecting a garbage collector
Урок 71.00:04:11
The G1 garbage collector
Урок 72.00:01:55
Tuning the G1 garbage collector
Урок 73.00:02:53
String de-duplication
Урок 74.00:03:45
Introducing Java Mission Control (JMC)
Урок 75.00:05:17
Building the JMC binaries
Урок 76.00:03:31
Running JMC and connecting to a VM
Урок 77.00:03:42
Customising the overview tab
Урок 78.00:01:41
The MBean Browser tab
Урок 79.00:02:25
The System, Memory and Diagnostic Commands tabs
Урок 80.00:08:00
Introducing our problem project
Урок 81.00:09:03
Using the flight recorder
Урок 82.00:04:23
Analyzing a flight recording
Урок 83.00:04:40
Improving our application
Урок 84.00:06:11
Why benchmarking isn't straight forward.
Урок 85.00:05:52
Setting up the code for benchmarking
Урок 86.00:01:54
A simple approach to micro-benchmarking
Урок 87.00:04:38
Adding in a warm-up period
Урок 88.00:02:31
Comparing two code alternatives
Урок 89.00:05:11
Using Macro-bencharmking
Урок 90.00:04:19
Installing the JMH benchmarking tool
Урок 91.00:05:57
Creating and running benchmarks
Урок 92.00:03:10
Using different benchmark modes
Урок 93.00:01:41
Instructions for exercise 1 (creating a flight recording)
Урок 94.00:05:13
Walkthrough of the solution & setting up ready for the next challenge
Урок 95.00:01:55
Instructions for exercise 2 (use JMH to macrobenchmark the project)
Урок 96.00:05:18
Walkthrough of the solution - part 1 setting up the code
Урок 97.00:07:10
Walkthrough of the solution - part 2 - integrating into JMH
Урок 98.00:01:40
Why it's important to understand how the different List implementations work
Урок 99.00:01:40
The 8 different list implementations
Урок 100.00:02:38
The CopyOnWriteArrayList
Урок 101.00:06:03
The ArrayList
Урок 102.00:05:33
Specifying the initial size of an ArrayList
Урок 103.00:02:56
The Vector
Урок 104.00:01:19
The Stack
Урок 105.00:03:08
The LinkedList
Урок 106.00:06:58
Choosing the optimal list type
Урок 107.00:02:38
Sorting lists
Урок 108.00:03:18
How Hashmaps Work - part 1
Урок 109.00:01:20
The role of the Hashcode
Урок 110.00:03:47
How Hashmaps Work - part 2
Урок 111.00:04:31
Specifying the initial size and factor of a HashMap
Урок 112.00:02:32
HashMap Performance
Урок 113.00:04:16
The rules for Hashcodes
Урок 114.00:06:30
Generating and optimising the Hashcode method
Урок 115.00:00:50
Optimising Hashmap Performance
Урок 116.00:04:53
How The LinkedHashMap Works
Урок 117.00:01:51
The HashTable and TreeMap
Урок 118.00:01:42
Introduction to how we'll compare coding options
Урок 119.00:02:55
Comparing primatives with objects
Урок 120.00:03:47
Comparing BigDecimals with Doubles
Урок 121.00:04:47
Using the StringBuilder
Урок 122.00:06:42
Comparing loops and streams
Урок 123.00:03:58
A note on logging
Урок 124.00:06:46
What is GraalVM?
Урок 125.00:03:00
Installing GraalVM
Урок 126.00:06:36
Using the Graal Virtual Machine
Урок 127.00:02:25
Using the Graal Compiler
Урок 128.00:04:15
Native image building with Graal
Урок 129.00:03:35
Using the Graal experimental features within OpenJDK
Урок 130.00:07:05
The principles of using other JVM Languages
Урок 131.00:10:51
Looking at bytecode with javap
Урок 132.00:07:23
Disassembling bytecode back to Java
Урок 133.00:03:02
The OpenJ9 Virtual Machine and what's coming up in future versions of Java