Java Performance And Tuning

This course covers topics like JVM architecture, memory allocation and management, Garbage Collector, profiling tools, real world case studies, JDK best practices and benchmarking.
Code: JVA-028
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
It helps programmers in tuning, profiling and troubleshooting the JVM, by analyzing and understanding dumps (heap, thread) in order to figure out possible processing bottlenecks that might occur

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
Basic understanding of how CPU and Memory works


Register for the next course
+
Registering in advance ensures you have priority. We’ll notify you when we schedule the next course on this topic
Bucharest €350
Krakow €350
Wroclaw €350

Invoices for the course will be issued in local currency. All fees above can change according to training location and delivery mode and are subject to change while scheduling. For individual participants the price is as displayed. For legal entities VAT is added to the displayed price.

Courses you may be interested in:

Sign up

First Name*
Last Name*
Company
Email*
Preferred Location
Phone
Your Comment

Contacts in

loading map...
Dimitrie Pompeiu nr 5-7 , building C, Et. 5, sect 2, Bucharest, 014459

Contact phone:

021 371 4858
loading map...
Luxoft Poland Wrocław - Silver Tower pl. Konstytucji 3-go Maja 3 50-048 Wrocław
loading map...
Aleja Generała Tadeusza Bora-Komorowskiego 25, Quattro Business Park Five, 31-476 Kraków, Poland

Contact phone:

+48 122110650
   Subscribe to our monthly newsletter
Success
Thank you.
Your request has been received.