Subscribe to Newsletter

Print

Java Performance Tuning Training Course


(This course is offered only on-demand to a private batch and can be customized as per the business requirements)

Objectives

At the end of the Java Performance Tuning training course, the participants will be able to gain an understanding of:

  • Optimization in multithreaded programming
  • How to process huge amounts of data with less CPU consumption
  • Can code be optimized in a multi CPU environment
  • If there are multiple process intensive operations to be done in parallel how do we achieve this in optimized way
  • Optimized caching mechanisms/less memory consumption
  • If there are lots of read-write operations to a persistence system/database, how can we optimize it

Suggested Audience - Project team that wants to ensure good performance of new version of application, which is going into production.

Duration - 2 Days [16 Hours]

Prerequisites - Experienced programmers with good knowledge of Java and multithreaded programming and comfortable developing Java applications.

Syllabus

1. Terms & Concepts 2. Performance v/s Scalability
3. Course objectives 4. Throughput, Latency
5. Factors that affect performance
  • Data set size
  • Concurrent requests
  • Simultaneous requests
6. Work characteristics
  • IO bound (db, disk access, remote calls)
  • CPU bound (xml processing, calculations etc.)
7. Anti-patterns that cause performance / scalability problems
  • Fine grained IO - chatty interfaces
  • Materializing full objects in memory (DOM parsing etc)
  • Single server architecture - no support for partitioning / load balancing (singleton caches, explicitly remote references)
  • Brittle dependencies - doesn't degrade gracefully under load
  • Busy waits
  • improper coarse grained locking - (synchronized methods, locking at higher levels - synchronized map v/s concurrent hash map)
  • blocking calls without timeouts
8. Testing to on cover problems
  • performance test - measuring single request / user performance
  • load test - measuring under load
  • jmeter / jprofiler etc
9. Patterns / best practices
  • Pagination
  • Coarse grained remote access
  • Partitioning - within process - multi threading
  • Asynchronous processing - messaging - better utilization of resources
  • Lazy loading / on demand loading
  • tuning - jvm, server / frameworks
10. For Memory
  • Memory management
  • Garbage collection
  • Object life cycles
  • Monitoring garbage collection
11. For Profiling
  • Tools to find latency
  • Inter-process communications monitoring
  • JDBC monitoring
  • Threading and concurrent
  • Java Management extensions (JMX)
  • Thread profiling
  • Execution profiling
  • Memory profiling
  • Memory leak and loitering objects diagnosis and repair
  • Thread dump analysis
12. Benchmarking
  • Micro/Macro benchmarking
  • Who affect benchmarks
  • How to analyze benchmarking results
  • Review of performance sensitive algorithms
  • Tips/Tricks/Process for Performance tuning
  • Ways of getting big gains first