Java Performance Tuning (D62066GC10)

 

Course Description

Java(TM) SE Performance Tuning, course provides students with the knowledge and
skills required to monitor, profile and tune the performance of a Java(TM)
technology application. This course takes a wholistic approach to performance
tuning. Students will learn to collect and interpret performance data by monitoring
and profiling all levels of the software stack beginning at the operating system (OS)
level and continuing through the Java Virtual Machine (JVM[TM]) level to the
application level. The course also examines performance tuning as it relates to
the use of 64 bit JVMs and multi-core platforms.

Who can benefit

Students who can benefit from this course are Java technology application developers,
consultants, architects, and system administrators who are interested in improving
the performance of Java technology applications.


Prerequisites

To succeed fully in this course, students should have a working knowledge of the
Java(TM) programming language and some familiarity with the concepts of memory
management, threads, debugging, and performance tuning.


Skills Gained

Upon completion of this course, students should be able to:

  • Incorporate monitoring, profiling and tuning into the application development life cycle
  • Monitor and Evaluate OS resource utilization
  • Monitor Garbage Collector (GC) performance
  • Monitor the JVM
  • Profile Java applications
  • Tune garbage collectors
  • Tune Just in Time (JIT)compilers
  • Examine and tune 64 bit JVMs
  • Optimize the JVM for Multi-core platforms


Related Courses

Before:


 

Course Outline

Module 1 - Examine Performance tuning

  • Distinguish between monitoring, profiling and tuning
  • Incorporate monitoring, profiling and tuning into the application development life cycle
  • Distinguish between monitoring, profiling and tuning
  • Define monitoring, profiling and tuning
  • Incorporate monitoring, profiling and tuning into the application development life cycle
  • Define and include performance targets for application testing

 

Module 2 - Monitor and Evaluate OS Resource Utilization

  • Monitor CPU utilization and interpret findings
  • Monitor network utilization and interpret findings
  • Monitor I/O utilization and interpret findings
  • Monitor memory utilization and interpret findings
  • Monitor processes and interpret findings
  • Monitor and evaluate OS resource utilization
  • Use tool to measure and interpret CPU utilization, user time, system time, idle CPU time voluntary context switching (VCX) and involuntary context switching (ICX) and interpret the results
  • Measure and interpret network statistics
  • Measure and interpret number of disk accesses, latency and average latency
  • Measure and interpret virtual memory paging and scan rate of processes
  • Measure and interpret process footprint size, thread count, thread state, lock contentionand context switches

 

Module 3 - Monitor and Evaluate JVM Performance

  • Monitor Garbage Collector (GC) performance
  • Monitor the JVM
  • Measure GC statistics
  • Measure frequency and duration of collections
  • Measure Java heap usage
  • Monitor the JIT compiler performance
  • Measure frequency, duration, and possible opt / de-opt cycles

 

Module 4 - Profile Java Applications

  • Examine and choose Java technology application profiling tools
  • Profile the CPU usage of a Java technology application
  • Profile the heap usage of a Java technology application 
  • Use profiling to detect lock contention
  • Monitor JVM memory usage
  • Examine free Java application profiling tools
  • Examine Sun studio collector analyzer
  • Examine Netbeans profiler
  • Examine profiling tools bundled with the Java Development Kit (JDK)
  • Profile a running Java application
  • Profile complete application to identify which methods use CPU and heap the most
  • Perform application subset or method profiling
  • Detect lock contention

 

Module 5 - Tune garbage collectors

  • Examine the generational garbage collector architecture
  • Tune collector generation sizes
  • Select collector that best fits application characteristics and requirements
  • Examine coding anti-patterns that impact garbage collection
  • Optimize the garbage collector for application
  • Select best fit collector based on application characteristics and needs
  • Set the size of the young, tenured and perm generations
  • Identify coding patterns that impact garbage collection efficiency

 

Module 6 - Tune Just in Time (JIT) compilers

  • Examine and Override JVM ergonomics
  • Tune the JIT compiler
  • Create micro benchmarks
  • Tune JIT compiler for a specific application
  • Check and override default ergonomic selections
  • Optimize the JIT compiler
  • Create micro benchmarks to measure application performance