Microsys Technologies and Solutions Pvt. Ltd.
Java/ J2EE Performance Tuning
Objective:: This prg helps to know to "performance tune" any type of Java program and make Java code run significantly faster. Ths course will help performance tuning process, right from such early considerations as setting goals, measuring performance, and choosing a compiler. This course will lay out a practical method for performance tuning of Web Applications and EJB's on BEA Weblogic and will help you evaluate how to deploy them in the real world to get the performance you need, and also to help you evaluate different approaches. Prerequisite:
Basic understanding of object oriented systems and Java.
Understanding of developing applications with Java and the J2EE.
Duration: 3 days Detailed Coverage:
Day 1 : What is Performance? Computational Performance RAM Footprint Startup Time Scalability Perceived Performance
The Performance Process Developing a Performance Process Analysis Object-Oriented Design
# 177, 8th Block, Jayanagar, Bangalore 560082 Ph: 41661184/5/6 page 1 of 7
Microsys Technologies and Solutions Pvt. Ltd.,
Coding Testing Profiling
Measuring performance Benchmarking Why Build Benchmarks? Micro-Benchmarks Macro-Benchmarks Analyzing Benchmarks
Java Performance Coding Best Practices for the J2SE
I/O Performance Basic I/O Buffered Streams Custom Buffering Further Improvements Serialization Serialization Example Improved Serialization Example Analyzing Persistent State NIO
RAM Footprint Computing RAM Footprint Assessing Memory Usage Measuring a Program's True Footprint What Contributes to Footprint? Objects Classes Threads
# 177, 8th Block, Jayanagar, Bangalore 560082 Ph: 41661184/5/6 page 2 of 7
Microsys Technologies and Solutions Pvt. Ltd.,
Native Data Structures Native Libraries Class Loading Measuring Class Loads
Controlling Class Loading Eager Class Loading Controlling Eager Loading Reducing the Number of Classes Simple Inner Classes Collapsing the Listeners Using Reflection Using a Proxy Running Multiple Programs Running in the Same Virtual Machine
Day 2: Object Mutability: String and Other Things Lots of Little Objects Handling String Objects Mutable Objects in AWT and Swing Eliminating Temporary Objects Other Mutable Object Tactics Simulating const Mutable Object Case Study Small Objects and the Modern JVM Object Pooling Array Mutability
Algorithms and Data Structures Selecting Algorithms Comparing Algorithms
# 177, 8th Block, Jayanagar, Bangalore 560082 Ph: 41661184/5/6 page 3 of 7
Microsys Technologies and Solutions Pvt. Ltd.,
Achieving Elegance Considering the Problem Space Using Recursive Algorithms Beyond Simple Algorithms Selecting Data Structures Java 2 Collections The Collection Interfaces Collection Interface List Objects Set Objects Map Objects Synchronized Collections Collections Framework Algorithms Plain Arrays Immutable Collections Collections Example Collection Benchmark Results
Using Native Code Native Graphics Example Native Code Comparison Examining JNI Costs Java Language Copy JNI Patterns Pattern 1: Call Pattern 2: Call-Pull Pattern 3: Call-Pull-Push Pattern 3 (Variant): Call-Pull-Push with Critical Pattern 4: Call-Invoke
# 177, 8th Block, Jayanagar, Bangalore 560082 Ph: 41661184/5/6
page 4 of 7
Microsys Technologies and Solutions Pvt. Ltd.,
Reflection and performance Profiling Profiling Execution Times Profiling Memory Usage Profiling to Locate Memory Leaks Basic Tools Using OptimizeIT/JProbe Timers & Logging Common Problems Load Testing Tools Load Testing Techniques JVM Profilers Heap Activity Monitors Dealing with Flat Profiles A Flat Profile Example
The Truth About Garbage Collection Why Should You Care About Garbage Collection? The Guarantees of GC The Object Lifecycle Created In Use Invisible Unreachable Collected Finalized Deallocated
Reference Objects Types of Reference Objects Example GC with WeakReference References on Garbage Collection The Java HotSpot Virtual Machine
# 177, 8th Block, Jayanagar, Bangalore 560082 Ph: 41661184/5/6 page 5 of 7
Microsys Technologies and Solutions Pvt. Ltd.,
HotSpot Architecture Two Versions of HotSpot Runtime Features Memory Allocation and Garbage Collection Thread Synchronization HotSpot Server Compiler Aggressive Inlining Other Optimizations Array Bounds Checks -X Flags -Xnoclassgc -Xincgc -Xbatch -Xms -Xmx -Xprof -XX Flags Kinds of -XX Flags PrintBytecodeHistogram CompileThreshold NewSize
Detailed look at BEA JRockit JVM and its console
Day 3: Performance in the context of J2EE Performance Coding Best Practices for J2EE EJB best practices Servlet/JSP best practices Transactions , Distributed transactions JDBC and performance. JMS and performance- persistant & non persistant
# 177, 8th Block, Jayanagar, Bangalore 560082 Ph: 41661184/5/6 page 6 of 7
Microsys Technologies and Solutions Pvt. Ltd.,
Design patterns for performance Performance Anti-patterns
J2EE application performance tuning tuning Web tier tuning ejbs connection leak profiling tuning in response to statistics from app server
# 177, 8th Block, Jayanagar, Bangalore 560082 Ph: 41661184/5/6
page 7 of 7