JVM Tuning and Performance Training
Description:
- Focus of the training is to make JVM and Java performance tuning clear and simple as possible for the participants at the design, architecture and, implementation levels. This is an end-to-end training. The Training illustrates almost every concept with the help of pictures because it is much easier to understand the concept pictorially and model code. There are a lot of illustrations in the course of the training. There are worked out examples to illustrate the concepts for almost every topic. There is a detailed case study that strings together all concepts and technology.
- The target group is programmers who want to know foundations of concurrent programming and existing concurrent programming environments, in order, now or in future, to develop multithreaded applications for multi-core processors and shared memory multiprocessors.
- Java Consultants, developers or anyone with Java experience interested in performance testing.
- Some experience with distributed technologies. Good Knowledge of Java.
- Working knowledge of any database Workstation with JDK 1.7.0 installed
- This is an instructor led course provides lecture topics and the practical application of Java and the underlying technologies.
- It pictorially presents most concepts and there is a detailed case study that strings together the technologies, patterns and design.
- Understanding Virtual Memory
- Garbage Collection and Memory Architecture
- Heap Fragmentation
- GC Pros and Cons
- Object Size
- Algorithms
- Overview
- Performance
- GC Tasks
- Reachability
- Managing OutOfMemoryError
- Generational Spaces
- Measuring GC Activity
- Summary
- Old Space
- Young Space
- JVM 1.4, 5, 6
- Reference Objects
- PhantomReference
- WeakHashMap
- SoftReference
- ReferenceQueue
- Object Reachability
- WeakReference
- Using References
- Abstracting
- Performance Implications
- Programming Tips
- Large Object of different sizes
- Object Pooling
- Reference Objects
- Object Allocation
- Problems with Finalization
- Heap sizing
- GC policy
- Be aware of Ergonomic settings
- Other tuning parameters
- Tuning for Low pause time
- Tuning for throughput
- Advance Tuning Scenarios-Part2
- JDK 5,6,7 defaults
- Default Flags
- Garbage Collection Data of Interest
- Tuning GC For Throughput and Latency
- Old(Parallel)
- Perm
- Young (Parallel)
- Pset Configuration
- Tenuring Distribution
- Initiating Occupancy
- Common Scenarios
- Survivor Ratio
- Tenuring threshold
- (Parallel GC)
- CondCardmark
- Adaptive Sizing
- Tlabs
- Large Pages
- Numa
- Pset Configuration
- Concurrent Mode Failure
- Monitoring GC
- Par New
- Parallel GC
- Safe Pointing
- Time Stamps
- Date Stamps
- System.GC
- Monitoring the GC
- Conclusions
- GC Tuning
- Tuning Parallel GC
- Tuning CMS
- Tuning the young generation
- Deployment Model
- Choosing Runtime
- General GuideLines
- Data Model
- Factor Controlling Heap Sizing
- Aggressive Inlining
- Biased locking
- Client VM
- Loop unrolling
- Server VM
- Data Flow analysis
- Dynamic Compilation
- OSR
- Dead Code Elimination
- Code Hoisting
- NUMA
- Inline caching
- Virtual method calls Details
- Virtual Machine Design
- Dynamic Compilation
- Large Pages
- Biased Locking
- Lock Coarsening
- Standard Compiler Optimization
- Speculative Optimizations
- Escape Analysis
- Scalar Replacements
- Inlining Details
- VM Philosophy
- JIT
- Mixed mode
- Golden Rule
- Profiling
- Optimizations
- DoEscapeAnalysis
- AggressiveOpts
- Polymorphic
- BiMorphic
- MegaMorphic
- MonoMorphic
- Client
- Server
- Tiered
- Deoptimizations
- Backing Off
- PrintCompilation
- OSR
- Log Compilations
- Optimizations
- PrintInlining
- Common intrinsics
- MaxInlineSize
- InlineSmallCode
- MaxInline
- MaxRecursiveInline
- FreqInlineSize
- PrintingAssembly
- UnlockingDiagnostics
- PrintOptoAssembly
- Constant values
- Stack Operations
- Opcodes
- Flow Control
- JVM Stack
- Local variables
- Stack Juggling
- Character Streams Encoding
- Other Charsets - ISO 8859
- Big / Little Endian
- Forms of Unicode
- 32-bit Characters
- Code Points
- Charset Class
- Other Encodings
- The Unicode Standard
- Encoders and Decoders
- Non-Blocking Operations
- Buffers Advantages
- Selectors
- Channels
- Allocating Buffers
- Motivation for Using
- Memory Mapped Files
- Working with Buffers
- Event Driven Architecture
- File System Change Notification
- Multicasting
- File and Directories
- Symbolic Links
- Watch Service API
- Metadata File Attributes
- Two Security models
- FileVisitor Class
- Working with path
- SPI Package
- Asynchronous IO with Socket and File
- Common Class loading Issues
- Changing the rules of default class visibility
- Class Loading Basics
- Introduction
- Diagnosing and resolving class loading problems
- Custom Class Loaders
- Class visibility
- Understanding visibility rules
- Advantages of Peer Class-loading
- Hot Loading
- IllegalAccessException
- ClassCastException
- Peer Class-loading
- Understanding delegation rules
- LinkageError
- Problems with these rules.
- Introduction
- Dynamic Mbeans
- Open Mbean
- Standard Mbeans
- JMX Remoting
- Advanced Features
- J2EE Management(optional)
- Model Mbean
- ProfilingTools
- Abuse of the String class
- Array copy
- Creating intermediate objects
- Wrong collections
- Primitive and Objects
- Mutable return types
- Architecture and Technologies used
- Issues with Traditional Profiling Schemes
- What is new in NetBeans Profiler 6.x?
- Features
- Introduction (of NetBeans profiler)
- Agent Controller
- Architecture Components
- Objectives
- Architecture
- Project Structure
- Memory profiling tools
- Generation count
- Memory leak profiling strategies
- Heap profiling strategies
- Identifying problem memory usage patterns
- When to use what tools?