Code: JVA-028
Duration: 16 hours
Duration: 16 hours
Description
All Java applications need to be efficient in terms of memory footprint and processing throughput. But allocating a larger amount of memory or switching to a more powerful CPU is not always good approach.Our Java Performance and Tuning course is an intensive training targeting experienced and advanced software developers who are looking to expand their knowledge in order to discover how to tune Java applications either by choosing the appropriate way of memory allocation, the best Garbage Collector algorithm or the most suitable way of using the JDK API.
Every developer should properly understand how to make a program efficient in terms of memory footprint or performance throughput. He should also have a good understanding about what happens inside the Java Virtual Machine. Knowing all of these issues means that memory allocation challenges or slow processing time can be easily detected and fixed, or prevented.
This course covers topics like JVM architecture, execution engine, memory model, garbage collectors, JVM tuning, JVM profiling and troubleshooting, analyzing case studies from a performance standpoint and presenting performance code best practices (tips and tricks).
The idea behind the course is that in order to be a good developer, writing good code is not enough. You also need to know how to look under the hood and think about how that code could behave better and positively influence performance metrics.
Roadmap
JVM Architecture- What is JVM
- Lifetime of JVM
- Architecture of JVM
- Runtime Data Areas
Class Loader
- Hierarchical model
- Cyclic delegation trap
- Class Data Sharing
- Case Study
Execution Engine
- Bytecode & Practice
- Bytecode Interpreter
- Ahead Of Time Compiler
- Just In Time Compiler
- Case Study
- Sun JVM Source Code & Case Study
Java Memory Structure
- Stack
- Code Cache
- Heap
- PermGen
- Metaspace & Compressed Class Space
- Case Study
Java Garbage Collection
- Garbage Collection Concepts
- Heap Allocation Techniques
- JVM Safepoint
- HotSpot Garbage Collectors
- Train Collector
- Serial Collector
- Parallel Collector
- Parallel Compacting Collector
- Concurrent Mark-Sweep Collector
- Garbage First Collector
- Case Study
Garbage Collection Friendly Programming
- Object Reference Types
- Strong reference
- Soft reference
- Weak Reference
- Phantom Reference
- Case Study
- Memory Leak
- Case Study
JVM Tuning
- Tuning Approach
- Tuning Parameters
- Case Study
JVM Profiling
- OS built-in tools (e.g. typeperf, PerfMon, ResMon, vmstat, iostat)
- JDK Tools (e.g. VisualVM, JMC, jps, jstack, jmap, jstat, jconsole)
- Case Study
- Eclipse Memory Analyzer
- Case Study
Case Study
- Case Study - Heap Dump Analyzing
- Case Study - Thread Dump Analyzing
Performance Friendly Programming (Tips & Tricks)
- Unsafe
- Synchronization technics
- Memory Access Patterns
- Java NIO
- Exceptions
- Logging
- Collections
Objectives
The aim of this course is to give a better understanding of what the Java Virtual Machine means in terms of:- Execution Engine
- Memory Model
- Garbage Collectors
- Performance JDK APIs
- Performance tactics
- Profiling tools
- Troubleshooting techniques
Getting familiar with profiling tools (either OS built-in or provided by JDK) and troubleshooting techniques is another target for the course
Java performance is tightly coupled with a few tactics and JDK APIs every developer should know. The right JDK APIs and tactics are presented to achieve best performance
Target Audience
Advanced or experienced Java developers keen on learning how performance can be achieved or increased by understanding JVM internals, how to tune and profile the JVM and how to write performant code.Prerequisites
Good understanding of Java Core principles- Multithreading
- Collections
- Object creation lifecycle
- Garbage Collector principles