-
Урок 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