Development of high-performance applications and JVM performance optimization

Until recently the creation of high-performance applications for Java platform has been reserved for C/C ++ and other languages compiled to the native code of the platform on which the application was ultimately supposed to run. Thanks to the efforts of the engineers working on the development of JVM, creation of high-performance applications for JVM platform has become commonplace today – just everyday life, which requires the software developers to understand virtual machine operation mechanisms, the rules governing access to the memory, and above all, another fresh look at memory management, “IN/OUT” operations and multi-thread programming.

The training course combines theory and practice: from the basics of automatic memory management to the optimization of the “garbage collector” parameters – sample application. From the threads and critical sections to “reentrant lock” and “atomic structures.” From a simple thread-based TCP server, to the same server using an event-based model and a non-blocking IO.

  1. Introduction to the mechanisms of the Java Virtual Machine
    1. Bytecode and the way it is interpreted by JVM
    2. JMM (Java Memory Model), i.e. functioning of the threads and access to the shared memory
    3. Brief introduction to the “garbage collectors” (GC) theory
    4. Generational GC in JVM
    5. New GC algorithm in Oracle JVM, i.e. a few words about G1
    6. PermGen space and off-JVM-heap memory allocation
    7. HotSpot compiler dynamic optimization of the executed code
  2. GC metrics and optimization
    1. Methods of GC metrics collection in Oracle JVM
    2. Tools and techniques for analyzing the GC behaviour (jmap, jhat, jstat, jstack, VisualVM, GCViewer, MAT (Memory Analyzer Tool)), JITWatcher
    3. Discussion of the available GC parameters in Oracle JVM
    4. GC behaviour optimization and a few words on how to choose the algorithm suitable for our needs
  3. Performance testing and optimizing the use of resources
    1. Methodologies of the application performance optimization
    2. CPU utilization optimization
    3. Memory usage optimization
    4. Memory leak detection
    5. “Lock contention” detection
    6. Anti-patterns in JVM performance testing and optimization
  4. Development of high-performance applications for Java platform
    1. Effective “input-output” operations with the use of Java NIO API
    2. Asynchronous nets, event-based development of Web applications
    3. Development of multi-threaded applications using java.util.concurrent
    4. Vert.x, a lightweight alternative platform for development of scalable applications
    5. Akka, actor model for JVM platform
    6. java.util.concurrent.atomic and other data structures for concurrent programming
    7. Techniques for working with java.lang.String objects
    8. Optimizations used by JVM you were afraid to ask about

Ask for this course