Java Performance Optimization

Rating:
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
Loading...
Please Log in or register to rate

Java Performance Optimization

JPO-203

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

Audience

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

Prerequisites:
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