Java Application Performance Tuning and Memory Management
- Descrição
- Currículo
- FAQ
- Revisões
In this course we’ll understand what can cause performance issues in our applications, and how to resolve them. This includes a review of some of the options available to us as developers at design-time – how to make good coding choices for optimal performance. For example, when should you pick an ArrayList over a LinkedList? How much difference does the StringBuilder really make? Is Lambda syntax more or less efficient at certain operations? We’ll also learn about various ways that we can configure the virtual machine to provide better performance at run-time, with a range of runtime arguments. We’ll also be diving deep into how the virtual machine manages memory, and how the garbage collection process works and impacts on application performance.
Along the way we’ll be learning about the Just In Time compiler, performance testing and benchmarking, decompiling bytecode, using the GraalVM as an alternative virtual machine and more.
About Java Versions: This is the second iteration of this course and it is designed for all the current versions of Java that have long term support (Java 8 , Java 11 and Java 17). You can follow along with any of these versions. You can also use either the Oracle or the OpenJDK JVMs. For developers using other JVM languages (such as Kotlin, Scala and Groovy) all of the JVM configuration parts of this course will still be relevant, and some of the coding choices may be useful to consider also. (Note that there’s even a review of whether Kotlin provides better or worse performance than Java!)
-
1What do we mean by performance, and what versions of Java does this course coverVídeo Aula
-
2Example code provided with this courseVídeo Aula
-
3Using different JDK and JVM vendorsVídeo Aula
-
4The structure of this courseVídeo Aula
-
5How to get support while you're taking this courseVídeo Aula
-
6What is bytecode?Vídeo Aula
-
7The concept of "Just In Time Compilation"Vídeo Aula
-
8Introducing the first example projectVídeo Aula
-
9Finding out which methods are being compiled in our applicationsVídeo Aula
-
10The C1 and C2 Compilers and logging the compilation activityVídeo Aula
-
11Tuning the code cache sizeVídeo Aula
-
12Remotely monitoring the code cache with JConsoleVídeo Aula
-
21What does "passing by value" mean?Vídeo Aula
-
22What does "passing by reference" mean?Vídeo Aula
-
23Passing objects into methodsVídeo Aula
-
24The final keyword and why it's not the same as a constantVídeo Aula
-
25Why the final keyword doesn't stop an object's values from being changedVídeo Aula
-
28Introduction - what is an escaping reference?Vídeo Aula
-
29Strategy 1 - using an iteratorVídeo Aula
-
30Strategy 2 - duplicating collectionsVídeo Aula
-
31Strategy 3 - using immutable collectionsVídeo Aula
-
32Strategy 4 - duplicating objectsVídeo Aula
-
33Strategy 5 - using interfaces to create immutable objectsVídeo Aula
-
34Strategy 6 - using modules to hide the implementationVídeo Aula
-
47What it means when we say Java is a managed languageVídeo Aula
-
48How Java knows which objects can be removed from the HeapVídeo Aula
-
49The System.gc() methodVídeo Aula
-
50Java 11's garbage collector can give unused memory back to the operating systemVídeo Aula
-
51Why it's not a good idea to run the System.gc() methodVídeo Aula
-
52The finalize() methodVídeo Aula
-
53The danger of using finalize()Vídeo Aula
-
65Monitoring garbage collectionsVídeo Aula
-
66Turning off automated heap allocation sizingVídeo Aula
-
67Tuning garbage collection - old and young allocationVídeo Aula
-
68Tuning garbage collection - survivor space allocationVídeo Aula
-
69Tuning garbage collection - generations needed to become oldVídeo Aula
-
70Selecting a garbage collectorVídeo Aula
-
71The G1 garbage collectorVídeo Aula
-
72Tuning the G1 garbage collectorVídeo Aula
-
73String de-duplicationVídeo Aula
-
74Introducing Java Mission Control (JMC)Vídeo Aula
-
75Building the JMC binariesVídeo Aula
-
76Running JMC and connecting to a VMVídeo Aula
-
77Customising the overview tabVídeo Aula
-
78The MBean Browser tabVídeo Aula
-
79The System, Memory and Diagnostic Commands tabsVídeo Aula
-
80Introducing our problem projectVídeo Aula
-
81Using the flight recorderVídeo Aula
-
82Analyzing a flight recordingVídeo Aula
-
83Improving our applicationVídeo Aula
