'Y'

Java Advanced II: High Performance Java

Learn how to improve the performance of Java applications.
Code: JVA-076
Duration: 40 hours

Description

During this training we’ll cover various approaches to profiling, finding bottlenecks, tuning a virtual machine, setting JVM flags, serialization and caching libraries. We’ll also look at off-heap data storage, benchmarking, memory monitoring and tuning and a host of other topics.

Roadmap

Performance tuning overview
  • Common practices
  • Tuning strategies
  • Performance metrics (latency, throughput, bandwidth)
  • How to improve performance
  • Tools for performance measurement
  • JMeter
  • Writing load tests with JMeter
  • How to improve performance via architecture
  • Common best practices for improving code performance

GC algorithms
  • Usage of memory by Java objects
  • Common approaches and algorithms of garbage collectors
  • Serial GC garbage collector
  • Parallel GC garbage collector
  • CMS garbage collector
  • G1 garbage collector
  • Shenandoah garbage collector
  • Garbage collectors tuning
  • Instruments to gather metrics of garbage collection
  • How to select the optimal garbage collector

HotSpot JIT compiler
  • JIT compilation
  • Java byte code
  • Tiered compilation
  • Code cache and tuning
  • Code optimizations
  • Code deoptimization (and when it happens)
  • JITWatch instrument to analyze compiling results
  • Types of optimization
  • Speculative optimizations
  • Compiler tuning
  • AOT compilation

JVM flags
  • Purpose and categories of JVM flags
  • Common flags
  • String-related flags
  • Memory management flags
  • Safepoints and related flags
  • TLABs and related flags
  • JVM tuning plan

Java benchmarking with JMH
  • What is benchmarking?
  • Introduction to JMH
  • API of JMH
  • Untrivial examples
  • JMH practice

Using off-heap memory
  • What is sun.misc.Unsafe?
  • Unsafe methods
  • Native memory performance
  • Creation of data structures in native memory
  • Measurements of performance of native memory (and comparison with memory on heap)
  • Foreign Memory Access API

Serialization
  • JSON serializers (GSON, Jackson)
  • Binary serializers (Protobuf, Jackson Smile, Kryo, FST, One NIO)
  • Performance comparison of various serializators

Java profiling
  • When and how to do profiling
  • Sampling and instrumenting profilers
  • Using Java VisualVM for profiling
  • Profiling with Spring AOP
  • Profiling with IDEA and async profiler
  • Java Flight Recorder
  • Analysis of Java Flight Recorder logs using Mission Control
  • Create and log custom JFR events
  • Using Java agents injected into code (to record events in Java Flight Recorder)
  • Writing programs for automatic analysis of JFR logs
  • Collecting and analyzing SQL queries using JFR
  • Collecting and analyzing REST requests using JFR

Monitoring and analysis of heap data / Memory leaks
  • Tools for analyzing data in heap memory
  • Signs of memory leaks
  • Main causes of memory leaks
  • Search and detection of memory leaks

GraalVM
  • GraalVM ecosystem
  • GraalVM runtimes
  • Polyglot API
  • Compilation and Native image
  • Benchmarks

Java caching
  • Caching patterns
  • Comparison of caching API
  • Caching of database queries
  • HTTP caching
  • Basic metrics and settings for caching libraries
  • Comparison of popular caching libraries
  • Service level caching
  • Caching Spring Services
  • Applications using caches on different layers

Overview of other approaches to improve performance
  • Parallel programming (thread pools, parallel streams, fork-join framework)
  • Asynchronous programming
  • Reactive programming (Reactor, VertX)
  • Optimization of database access
  • Cloud computing (microservices, Spring Cloud)
  • Benchmarks and conclusions

Objectives

  • An introduction to the modern approaches of improving Java applications performance

Target Audience

  • Java developers
  • Java architects


Schedule in Online Prices
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
Online €650
Bucharest €650
Krakow €650
Wroclaw €650

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. Price does not include VAT.

Courses you may be interested in:

Sign up

First Name*
Last Name*
Company
Email*
Preferred Location
Phone
Your Comment
Still have questions?
Connect with us
Thank you.
Your request has been received.
Thank you!
The form has been submitted successfully.