Java Performance

3 days

This workshop teaches developers and architects the necessary skills, to define, benchmark, monitor, solve performance bottlenecks in Java Applications.

Students should have at least one year of practical Java experience. Preferably students are familiar with basic threading, JMX and JPA

Please find the course objectives below:


  • Strings and performance
  • Using the correct I/O implementations
  • Choosing Collection Implementations
  • Serialisation and Marshalling alternatives
  • Using Java 8' Streams

Application Architecture

  • Database Cache
  • Stateful applications and Session Replication
  • Inter-application communication (protocols and marshalling)


  • Use java's own tools
  • Discuss and use Load testing tools
  • microbenchmarking tools
  • Use profiling tools


  • Recap of Parallelisme and Concurrency
  • Using Threads
  • Recap of Thread programming (post Java 5)
  • Using and managing Thread Pools
  • Synchronizing threads
  • Using the lock API
  • Using Concurrent collections
  • Use Blocking queues
  • Atomic types (e.g, AtomicInteger)
  • Using fork/join
  • Using non-blocking code and APIs

Memory and Garbage collection

  • Understanding Java's memory management (java 7 and java 8)
  • monitoring garbage collection
  • Understand the concept of the generational heap
  • Discuss various types of collector strategies
  • Tuning the collectors

Other directions

  • Functional Programming (no mutability)
  • Akka (share nothing)
  • Reactive Streams
For an onsite course please contact us