Video description
With any comprehensive, large-scale programming language, if you’re not careful during your development processes, you can end up with a bloated, poorly performing application. This course examines techniques and methods that you can employ to optimize your Java code and squeeze more efficiency out of your applications. You’ll look at JVM subsystems, modern processor technologies and how you can best utilize them, and how to diagnose an application to find trouble areas that might be affecting its performance. This course is designed for intermediate- to advanced-level programmers. Here are just some of the areas in which this course can benefit you:
- Review the historical context of Moore’s Law and how Java has benefitted from it over the years
- Examine the technical complexities of the JVM subsystems
- See how to design and set up monitoring and logging systems to help you analyze and assess how your code is functioning
- Learn both basic and advanced garbage collection techniques
- Compile AOT and JIT, including tiered compilation and how it really works
- Investigate concurrent techniques such as synchronization, OS-level locking, and non-availability to single-core processors
Your host, Ben Evans is an author, speaker, consultant and educator. He is a co-founder of jClarity, a startup which delivers performance tools and services to help development and ops teams. He helps to organize the London Java Community and serves on the Java Community Process Executive Committee, helping to define standards for the Java ecosystem. He is a Java Champion, JavaOne Rockstar Speaker and a Java Editor at InfoQ. Ben travels frequently and speaks regularly, all over the world.
Table of Contents
Introduction
Welcome to the Course
Setting the Scene
Theory: JVM Subsystems
Theory: Moore’s Law Consequences
Theory: Modern Processor Architecture
Theory: Operating Systems and Code Execution
Internals: JVM Objects at Runtime
Internals: Bytecode Basics
Internals: Execution of Bytecode
Top Down Analysis
Practical: Architecting Logging for Observability
Theory: Simple System Model
Practical: Basic Analysis Technique
Understanding Garbage Collection
Theory: Introduction to Mark and Sweep
Theory: Generational Mark and Sweep
Practical: HotSpot (v8) Heap - Parallel
Theory: Allocation and Lifetime
Advanced Garbage Collection
Theory: Collector Tradeoffs
Theory: Concurrent Marking
Internals: Safepoints Reconsidered
Practical: Concurrent Mark and Sweep (CMS)
Practical: G1
JTI Compilation
Overview: JIT Compilation
Practical: Tuning JIT Compilation with Code Cache
Internals: Compilation Strategies in HotSpot
Practical: JIT-friendly code
Profiling Statistics
Practical: Introduction to Noisy Data
Methodology: Review of Statistics for Performance
Practical: Statistical Profiling
Theory: Microbenchmarks
Beyond Java 8
Theory: Graal
Practical: Hands-on With Graal and GraalVM
Theory: Value Types
Conclusion
Wrap Up and Thank You