World-class Java performance experts present detailed information on common top-down (application-centric) tuning and bottom-up (hardware/OS centric) approaches, with solid coverage of Windows, Linux, and Solaris. They show how to improve performance by applying state-of-the-art software engineering practices, and how to avoid common mistakes that can lead to writing poorly performing software. Throughout, there are dozens of Java performance tips and tricks available nowhere else.
Table of Contents:
Chapter 1: Garbage First Overview
Terminology
Parallel GC
Serial GC
Concurrent Mark Sweep (CMS) GC
Garbage First (G1) GC
References
Chapter 2: Garbage First Garbage Collector in Depth
Background
Garbage Collection in G1
The Young Generation
A Young Collection Pause
Object Aging and the Old Generation
Humongous Regions
A Mixed Collection Pause
Collection Sets and Their Importance
Remembered Sets and Their Importance
Concurrent Marking in G1 GC
Stages of Concurrent Marking
Evacuation Failures and Full Collection
References
Chapter 3: Garbage First Garbage Collector Performance Tuning
The Stages of a Young Collection
Young Generation Tunables
Concurrent Marking Phase Tunables
A Refresher on the Mixed Garbage Collection Phase
The Taming of a Mixed Garbage Collection Phase
Avoiding Evacuation Failures
Reference Processing
References
Chapter 4: The Serviceability Agent
What Is the Serviceability Agent?
Why Do We Need the SA?
SA Components
SA Binaries in the JDK
JDK Versions with Complete SA Binaries
How the SA Understands HotSpot VM Data Structures
SA Version Matching
The Serviceability Agent Debugging Tools
Core Dump or Crash Dump Files
Debugging Transported Core Files
System Properties for the Serviceability Agent
Environment Variables for the Serviceability Agent
JDI Implementation
Extending Serviceability Agent Tools
Serviceability Agent Plugin for VisualVM
Troubleshooting Problems Using the SA
Appendix: Additional HotSpot VM Command-Line Options of Interest