Java performance the definitive guide
Coding and testing are often considered separate areas of expertise. In this comprehensive guide, author and Java expert Scott Oaks takes the approach that anyone who works with Java should be equally adept at understanding how code behaves in the JVM, as well as the tunings likely to help its perfo...
Other Authors: | |
---|---|
Format: | eBook |
Language: | Inglés |
Published: |
Sebastopol, California :
O'Reilly Media
2014.
|
Edition: | 1st edition |
Subjects: | |
See on Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009629055406719 |
Table of Contents:
- Cover
- Copyright
- Table of Contents
- Preface
- Who Should (and Shouldn't) Read This Book
- Conventions Used in This Book
- Using Code Examples
- Safari® Books Online
- How to Contact Us
- Acknowledgments
- Chapter 1. Introduction
- A Brief Outline
- Platforms and Conventions
- JVM Tuning Flags
- The Complete Performance Story
- Write Better Algorithms
- Write Less Code
- Oh Go Ahead, Prematurely Optimize
- Look Elsewhere: The Database Is Always the Bottleneck
- Optimize for the Common Case
- Summary
- Chapter 2. An Approach to Performance Testing
- Test a Real Application
- Microbenchmarks
- Macrobenchmarks
- Mesobenchmarks
- Common Code Examples
- Understand Throughput, Batching, and Response Time
- Elapsed Time (Batch) Measurements
- Throughput Measurements
- Response Time Tests
- Understand Variability
- Test Early, Test Often
- Summary
- Chapter 3. A Java Performance Toolbox
- Operating System Tools and Analysis
- CPU Usage
- The CPU Run Queue
- Disk Usage
- Network Usage
- Java Monitoring Tools
- Basic VM Information
- Thread Information
- Class Information
- Live GC Analysis
- Heap Dump Postprocessing
- Profiling Tools
- Sampling Profilers
- Instrumented Profilers
- Blocking Methods and Thread Timelines
- Native Profilers
- Java Mission Control
- Java Flight Recorder
- Enabling JFR
- Selecting JFR Events
- Summary
- Chapter 4. Working with the JIT Compiler
- Just-in-Time Compilers: An Overview
- Hot Spot Compilation
- Basic Tunings: Client or Server (or Both)
- Optimizing Startup
- Optimizing Batch Operations
- Optimizing Long-Running Applications
- Java and JIT Compiler Versions
- Intermediate Tunings for the Compiler
- Tuning the Code Cache
- Compilation Thresholds
- Inspecting the Compilation Process
- Advanced Compiler Tunings
- Compilation Threads
- Inlining.
- Escape Analysis
- Deoptimization
- Not Entrant Code
- Deoptimizing Zombie Code
- Tiered Compilation Levels
- Summary
- Chapter 5. An Introduction to Garbage Collection
- Garbage Collection Overview
- Generational Garbage Collectors
- GC Algorithms
- Choosing a GC Algorithm
- Basic GC Tuning
- Sizing the Heap
- Sizing the Generations
- Sizing Permgen and Metaspace
- Controlling Parallelism
- Adaptive Sizing
- GC Tools
- Summary
- Chapter 6. Garbage Collection Algorithms
- Understanding the Throughput Collector
- Adaptive and Static Heap Size Tuning
- Understanding the CMS Collector
- Tuning to Solve Concurrent Mode Failures
- Tuning CMS for Permgen
- Incremental CMS
- Understanding the G1 Collector
- Tuning G1
- Advanced Tunings
- Tenuring and Survivor Spaces
- Allocating Large Objects
- AggressiveHeap
- Full Control Over Heap Size
- Summary
- Chapter 7. Heap Memory Best Practices
- Heap Analysis
- Heap Histograms
- Heap Dumps
- Out of Memory Errors
- Using Less Memory
- Reducing Object Size
- Lazy Initialization
- Immutable and Canonical Objects
- String Interning
- Object Lifecycle Management
- Object Reuse
- Weak, Soft, and Other References
- Summary
- Chapter 8. Native Memory Best Practices
- Footprint
- Measuring Footprint
- Minimizing Footprint
- Native NIO Buffers
- Native Memory Tracking
- JVM Tunings for the Operating System
- Large Pages
- Compressed oops
- Summary
- Chapter 9. Threading and Synchronization Performance
- Thread Pools and ThreadPoolExecutors
- Setting the Maximum Number of Threads
- Setting the Minimum Number of Threads
- Thread Pool Task Sizes
- Sizing a ThreadPoolExecutor
- The ForkJoinPool
- Automatic Parallelization
- Thread Synchronization
- Costs of Synchronization
- Avoiding Synchronization
- False Sharing
- JVM Thread Tunings.
- Tuning Thread Stack Sizes
- Biased Locking
- Lock Spinning
- Thread Priorities
- Monitoring Threads and Locks
- Thread Visibility
- Blocked Thread Visibility
- Summary
- Chapter 10. Java Enterprise Edition Performance
- Basic Web Container Performance
- HTTP Session State
- Thread Pools
- Enterprise Java Session Beans
- Tuning EJB Pools
- Tuning EJB Caches
- Local and Remote Instances
- XML and JSON Processing
- Data Size
- An Overview of Parsing and Marshalling
- Choosing a Parser
- XML Validation
- Document Models
- Java Object Models
- Object Serialization
- Transient Fields
- Overriding Default Serialization
- Compressing Serialized Data
- Keeping Track of Duplicate Objects
- Java EE Networking APIs
- Sizing Data Transfers
- Summary
- Chapter 11. Database Performance Best Practices
- JDBC
- JDBC Drivers
- Prepared Statements and Statement Pooling
- JDBC Connection Pools
- Transactions
- Result Set Processing
- JPA
- Transaction Handling
- Optimizing JPA Writes
- Optimizing JPA Reads
- JPA Caching
- JPA Read-Only Entities
- Summary
- Chapter 12. Java SE API Tips
- Buffered I/O
- Classloading
- Random Numbers
- Java Native Interface
- Exceptions
- String Performance
- Logging
- Java Collections API
- Synchronized Versus Unsynchronized
- Collection Sizing
- Collections and Memory Efficiency
- AggressiveOpts
- Alternate Implementations
- Miscellaneous Flags
- Lambdas and Anonymous Classes
- Lambda and Anonymous Classloading
- Stream and Filter Performance
- Lazy Traversal
- Summary
- Appendix A. Summary of Tuning Flags
- Index
- About the Author.