Preface ix
Acknowledgments xi
About the Authors xv
Chapter 1: Garbage First Overview 1
Terminology 1
Parallel GC 2
Serial GC 4
Concurrent Mark Sweep (CMS) GC 5
Garbage First (G1) GC 8
References 14
Chapter 2: Garbage First Garbage Collector in Depth 15
Background 15
Garbage Collection in G1 16
The Young Generation 17
A Young Collection Pause 18
Object Aging and the Old Generation 19
Humongous Regions 19
A Mixed Collection Pause 22
Collection Sets and Their Importance 24
Remembered Sets and Their Importance 24
Concurrent Marking in G1 GC 30
Stages of Concurrent Marking 34
Evacuation Failures and Full Collection 37
References 38
Chapter 3: Garbage First Garbage Collector Performance Tuning 39
The Stages of a Young Collection 39
Young Generation Tunables 50
Concurrent Marking Phase Tunables 52
A Refresher on the Mixed Garbage Collection Phase 54
The Taming of a Mixed Garbage Collection Phase 56
Avoiding Evacuation Failures 59
Reference Processing 60
References 65
Chapter 4: The Serviceability Agent 67
What Is the Serviceability Agent? 68
Why Do We Need the SA? 68
SA Components 69
SA Binaries in the JDK 69
JDK Versions with Complete SA Binaries 69
How the SA Understands HotSpot VM Data Structures 70
SA Version Matching 71
The Serviceability Agent Debugging Tools 72
Core Dump or Crash Dump Files 108
Debugging Transported Core Files 109
System Properties for the Serviceability Agent 111
Environment Variables for the Serviceability Agent 112
JDI Implementation 113
Extending Serviceability Agent Tools 115
Serviceability Agent Plugin for VisualVM 117
Troubleshooting Problems Using the SA 123
Appendix: Additional HotSpot VM Command-Line Options of Interest 145
Index 155