Course Content
Understanding Virtual Memory NIO
- Java New IO Package
- Motivation for Using
- Working with Buffers
- Allocating Buffers
- Buffers Advantages
- Channels
- Memory Mapped Files
- Non-Blocking Operations
- Selectors
- NIO Uses
- Event Driven Architecture
- Character Streams Encoding
- The Unicode Standard
- Forms of Unicode
- 32-bit Characters
- Big / Little Endian
- Other Encodings
- Other Charsets - ISO 8859
- Charset Class
- Encoders and Decoders
- Code Points
NIO 2.0
- Working with path
- Metadata File Attributes
- Symbolic Links
- File and Directories
- FileVisitor Class
- Watch Service API
- Two Security models
- SPI Package
- File System Change Notification
- Multicasting
- Asynchronous IO with Socket and File
Garbage Collection and Memory Architecture
- Overview
- Generational Spaces
- GC Tasks
- Heap Fragmentation
- GC Pros and Cons
- Algorithms
- Reachability
- History
- JVM 1.4, 5, 6
- Young Space
- Old Space
- Summary
- Measuring GC Activity
- Performance
- Object Size
- Managing OutOfMemoryError
Reference Objects
- Reference Objects
- Object Reachability
- Using References
- SoftReference
- WeakReference
- PhantomReference
- Abstracting
- ReferenceQueue
- WeakHashMap
- SoftHashMap
- Performance Implications
Garbage Collection and Performance Tips
- Programming Tips
- Problems with Finalization
- Reference Objects
- Object Allocation
- Object Pooling
- Large Object of different sizes
Common Tuning Options
- Be aware of Ergonomic settings
- Heap sizing
- GC policy
- Other tuning parameters
- Tuning for throughput
- Tuning for Low pause time
Advance Tuning Scenarios
- GC Tuning
- Tuning the young generation
- Tuning Parallel GC
- Tuning CMS
- Monitoring the GC
- Conclusions
JMX
- Introduction
- Standard Mbeans
- Dynamic Mbeans
- Model Mbean
- Open Mbean
- JMX Remoting
- Advanced Features
- J2EE Management(optional)
Profiling Tools
Profiling Java SE Memory
- Memory profiling tools
- Heap profiling strategies
- Memory leak profiling strategies
- Generation count
- When to use what tools?
- Identifying problem memory usage patterns
Profiling with Netbeans or VisualVM
- Issues with Traditional Profiling Schemes
- Introduction (of NetBeans profiler)
- Architecture and Technologies used
- Features
- What is new in NetBeans Profiler 6.x?
Profiling Using Eclipse TPTP
- Objectives
- Project Structure
- Architecture
- Architecture Components
- Agent Controller
Performance Programming Tips
- Primitive and Objects
- Abuse of the String class
- Creating intermediate objects
- Mutable return types
- Wrong collections
- Array copy
JVM Architecture and Dynamic Compilation
- Dynamic Compilation
- Code Hoisting
- Dead Code Elimination
- Biased locking
- Loop unrolling
- Aggressive Inlining
- Data Flow analysis
- OSR
- Server VM
- Client VM
Advanced JVM Architecture
- Virtual Machine Design
- Dynamic Compilation
- VM Philosophy
- Virtual method calls Details
- Inlining Details
- Speculative Optimizations
- Standard Compiler Optimizations
- Scalar Replacements
- Escape Analysis
- Lock Coarsening
- Biased Locking
- Inline caching
- Large Pages
- NUMA