Java Performance Optimization

1 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 5
Please Log in or register to rate

Java Performance Optimization


The Java Performance Optimization course provides students with the knowledge, skills and methodologies required to approach and solve Java platform performance problems by using a comprehensive toolset to monitor profile and tune performance. In this course you will learn how to monitor the OS (Windows & Linux) and the JVM to identify performance problems and how to profile the application to isolate issues and resolve them. The course also discusses the aspect of optimizing 64-bit JVMs and multi-core platforms.

Course Objectives

Upon completion of the course, participants will be able to:

• Understand how to approach performance problems
• Assure adequate performance throughout the development life cycle
• Monitor Windows and Linux resource utilization
• Monitor the JVM
• Profile Java applications (Memory and CPU)
• Tune garbage collectors
• Tune Just in Time (JIT) compilers
• Tune 64-bit JVMs
• Optimize the JVM for Multi-core platforms


Target Audience:
Experienced Java developers, performance engineers, consultants, and architects interested in improving the performance of their Java technology applications.

Working knowledge of the Java programming language and familiarity with the concepts of memory management, threads and debugging

Course Topics

Module 1 – Introduction to Performance

  • What is a good performance?
  • Perceived performance
  • Performance and the development life cycle
  • High performance architecture
  • Capacity planning
  • Load, stress and endurance tests
  • What is monitoring, profiling and tuning?
  • The iterative process of optimization
  • The optimizer spirit

Module 2 – System Monitoring

  • System health
  • Planned monitoring vs. ad-hoc monitoring
  • What to monitor? Understand what CPU, Memory, I/O, processes and network metrics mean.
  • Tools for monitoring Windows OS
  • Tools for monitoring Linux OS
  • How to interpret your findings

Module 3 – JVM Monitoring

  • JVM health
  • JMX console
  • Monitor JVM heap utilization
  • Monitor Garbage Collection (GC)
  • Monitor JIT compiler
  • Monitor GC statistics

Module 4 – CPU Profiling

  • Terminology
  • JVMPI, JVMTI and instrumentation
  • VisualVM
  • Commercial profilers
  • Investigation process of CPU problems
  • Dead-locks, live-locks, lock contention and other concurrency problems

Module 5 – Concurrency and Performance

  • Dead-locks,
  • live-locks,
  • lock contention
  • Starvation and fairness

Module 6 – The Just in Time (JIT) compiler

  • JIT compiler optimizations
  • Client vs. server vs. tiered compilation
  • How to solve JIT related problems

Module 7 –Benchmarking

  • Dangers of micro-benchmarking
  • A flawed micro-benchmark
  • How to write a sound micro-benchmark

Module 8 – Garbage Collection

  • Overview of the different garbage collectors
  • Which collector is right for my application?
  • Coding anti-patterns that impact garbage collection
  • Optimizing the garbage collector for a specific application
  • The G1 garbage collector

Module 9 – Tuning Memory

  • Sizing young, tenured and perm generations Optimizing the GC for a specific application
  • 64-bit and huge heap considerations
  • Multi-core platform considerations
  • JVM Ergonomics

Module 10 – Profiling  Memory

  • Terminology: shallow vs. retained memory
  • Different types of memory problems: memory leaks, out of memory and thread leaks
  • Optimizing memory consumption
  • Grabbing memory snapshots
  • Analyzing memory snapshots MAT,  JHat and commercial profilers
  • Memory size limitations
  • 64-bit memory consumption and the compressed OOPs
People also viewed
© Copyright - Skilit - Site by Dweb