Submit Search
Upload
Garbage First Garbage Collector: Where the Rubber Meets the Road!
•
12 likes
•
2,018 views
Monica Beckwith
Follow
Garbage First GC performance and tuning with examples delivered at DevoxxUS
Read less
Read more
Technology
Report
Share
Report
Share
1 of 96
Recommended
Garbage First Garbage Collector (G1 GC): Current and Future Adaptability and ...
Garbage First Garbage Collector (G1 GC): Current and Future Adaptability and ...
Monica Beckwith
G1 Garbage Collector: Details and Tuning
G1 Garbage Collector: Details and Tuning
Simone Bordet
Let's Learn to Talk to GC Logs in Java 9
Let's Learn to Talk to GC Logs in Java 9
Poonam Bajaj Parhar
Jvm & Garbage collection tuning for low latencies application
Jvm & Garbage collection tuning for low latencies application
Quentin Ambard
HBase Advanced - Lars George
HBase Advanced - Lars George
JAX London
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
Cloudera, Inc.
HBaseCon 2012 | Lessons learned from OpenTSDB - Benoit Sigoure, StumbleUpon
HBaseCon 2012 | Lessons learned from OpenTSDB - Benoit Sigoure, StumbleUpon
Cloudera, Inc.
Supporting Apache HBase : Troubleshooting and Supportability Improvements
Supporting Apache HBase : Troubleshooting and Supportability Improvements
DataWorks Summit
Recommended
Garbage First Garbage Collector (G1 GC): Current and Future Adaptability and ...
Garbage First Garbage Collector (G1 GC): Current and Future Adaptability and ...
Monica Beckwith
G1 Garbage Collector: Details and Tuning
G1 Garbage Collector: Details and Tuning
Simone Bordet
Let's Learn to Talk to GC Logs in Java 9
Let's Learn to Talk to GC Logs in Java 9
Poonam Bajaj Parhar
Jvm & Garbage collection tuning for low latencies application
Jvm & Garbage collection tuning for low latencies application
Quentin Ambard
HBase Advanced - Lars George
HBase Advanced - Lars George
JAX London
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
Cloudera, Inc.
HBaseCon 2012 | Lessons learned from OpenTSDB - Benoit Sigoure, StumbleUpon
HBaseCon 2012 | Lessons learned from OpenTSDB - Benoit Sigoure, StumbleUpon
Cloudera, Inc.
Supporting Apache HBase : Troubleshooting and Supportability Improvements
Supporting Apache HBase : Troubleshooting and Supportability Improvements
DataWorks Summit
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Monica Beckwith
Intro to cassandra
Intro to cassandra
Aaron Ploetz
Upgrading To The New Map Reduce API
Upgrading To The New Map Reduce API
Tom Croucher
ClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei Milovidov
Altinity Ltd
A G1GC Saga-KCJUG.pptx
A G1GC Saga-KCJUG.pptx
Monica Beckwith
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
DataStax
BPF Internals (eBPF)
BPF Internals (eBPF)
Brendan Gregg
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
SUSE Labs Taipei
Query Compilation in Impala
Query Compilation in Impala
Cloudera, Inc.
Prometheus Project Journey
Prometheus Project Journey
Jinwoong Kim
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Altinity Ltd
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Altinity Ltd
Jvm tuning for low latency application & Cassandra
Jvm tuning for low latency application & Cassandra
Quentin Ambard
Practice of large Hadoop cluster in China Mobile
Practice of large Hadoop cluster in China Mobile
DataWorks Summit
Hadoop Meetup Jan 2019 - Dynamometer and a Case Study in NameNode GC
Hadoop Meetup Jan 2019 - Dynamometer and a Case Study in NameNode GC
Erik Krogen
Local Secondary Indexes in Apache Phoenix
Local Secondary Indexes in Apache Phoenix
Rajeshbabu Chintaguntla
hbaseconasia2019 HBCK2: Concepts, trends, and recipes for fixing issues in HB...
hbaseconasia2019 HBCK2: Concepts, trends, and recipes for fixing issues in HB...
Michael Stack
Apache HBase Improvements and Practices at Xiaomi
Apache HBase Improvements and Practices at Xiaomi
HBaseCon
OpenJDK Concurrent Collectors
OpenJDK Concurrent Collectors
Monica Beckwith
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Databricks
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
Monica Beckwith
Game of Performance: A Song of JIT and GC
Game of Performance: A Song of JIT and GC
Monica Beckwith
More Related Content
What's hot
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Monica Beckwith
Intro to cassandra
Intro to cassandra
Aaron Ploetz
Upgrading To The New Map Reduce API
Upgrading To The New Map Reduce API
Tom Croucher
ClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei Milovidov
Altinity Ltd
A G1GC Saga-KCJUG.pptx
A G1GC Saga-KCJUG.pptx
Monica Beckwith
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
DataStax
BPF Internals (eBPF)
BPF Internals (eBPF)
Brendan Gregg
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
SUSE Labs Taipei
Query Compilation in Impala
Query Compilation in Impala
Cloudera, Inc.
Prometheus Project Journey
Prometheus Project Journey
Jinwoong Kim
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Altinity Ltd
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Altinity Ltd
Jvm tuning for low latency application & Cassandra
Jvm tuning for low latency application & Cassandra
Quentin Ambard
Practice of large Hadoop cluster in China Mobile
Practice of large Hadoop cluster in China Mobile
DataWorks Summit
Hadoop Meetup Jan 2019 - Dynamometer and a Case Study in NameNode GC
Hadoop Meetup Jan 2019 - Dynamometer and a Case Study in NameNode GC
Erik Krogen
Local Secondary Indexes in Apache Phoenix
Local Secondary Indexes in Apache Phoenix
Rajeshbabu Chintaguntla
hbaseconasia2019 HBCK2: Concepts, trends, and recipes for fixing issues in HB...
hbaseconasia2019 HBCK2: Concepts, trends, and recipes for fixing issues in HB...
Michael Stack
Apache HBase Improvements and Practices at Xiaomi
Apache HBase Improvements and Practices at Xiaomi
HBaseCon
OpenJDK Concurrent Collectors
OpenJDK Concurrent Collectors
Monica Beckwith
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Databricks
What's hot
(20)
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Intro to cassandra
Intro to cassandra
Upgrading To The New Map Reduce API
Upgrading To The New Map Reduce API
ClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei Milovidov
A G1GC Saga-KCJUG.pptx
A G1GC Saga-KCJUG.pptx
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
BPF Internals (eBPF)
BPF Internals (eBPF)
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
Query Compilation in Impala
Query Compilation in Impala
Prometheus Project Journey
Prometheus Project Journey
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Jvm tuning for low latency application & Cassandra
Jvm tuning for low latency application & Cassandra
Practice of large Hadoop cluster in China Mobile
Practice of large Hadoop cluster in China Mobile
Hadoop Meetup Jan 2019 - Dynamometer and a Case Study in NameNode GC
Hadoop Meetup Jan 2019 - Dynamometer and a Case Study in NameNode GC
Local Secondary Indexes in Apache Phoenix
Local Secondary Indexes in Apache Phoenix
hbaseconasia2019 HBCK2: Concepts, trends, and recipes for fixing issues in HB...
hbaseconasia2019 HBCK2: Concepts, trends, and recipes for fixing issues in HB...
Apache HBase Improvements and Practices at Xiaomi
Apache HBase Improvements and Practices at Xiaomi
OpenJDK Concurrent Collectors
OpenJDK Concurrent Collectors
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Similar to Garbage First Garbage Collector: Where the Rubber Meets the Road!
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
Monica Beckwith
Game of Performance: A Song of JIT and GC
Game of Performance: A Song of JIT and GC
Monica Beckwith
The Performance Engineer's Guide To (OpenJDK) HotSpot Garbage Collection - Th...
The Performance Engineer's Guide To (OpenJDK) HotSpot Garbage Collection - Th...
Monica Beckwith
淺談 Java GC 原理、調教和新發展
淺談 Java GC 原理、調教和新發展
Leon Chen
G1 collector and tuning and Cassandra
G1 collector and tuning and Cassandra
Chris Lohfink
Java 9: The (G1) GC Awakens!
Java 9: The (G1) GC Awakens!
Monica Beckwith
Optimizing InfluxDB Performance in the Real World | Sam Dillard | InfluxData
Optimizing InfluxDB Performance in the Real World | Sam Dillard | InfluxData
InfluxData
GC Tuning Confessions Of A Performance Engineer - Improved :)
GC Tuning Confessions Of A Performance Engineer - Improved :)
Monica Beckwith
Way Improved :) GC Tuning Confessions - presented at JavaOne2015
Way Improved :) GC Tuning Confessions - presented at JavaOne2015
Monica Beckwith
1404 app dev series - session 8 - monitoring & performance tuning
1404 app dev series - session 8 - monitoring & performance tuning
MongoDB
The Performance Engineer's Guide To HotSpot Just-in-Time Compilation
The Performance Engineer's Guide To HotSpot Just-in-Time Compilation
Monica Beckwith
JFokus Java 9 contended locking performance
JFokus Java 9 contended locking performance
Monica Beckwith
G1GC
G1GC
koji lin
Tuning Java GC to resolve performance issues
Tuning Java GC to resolve performance issues
Sergey Podolsky
Moving Toward Deep Learning Algorithms on HPCC Systems
Moving Toward Deep Learning Algorithms on HPCC Systems
HPCC Systems
Everything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @Twitter
Attila Szegedi
Basics of JVM Tuning
Basics of JVM Tuning
Vladislav Gangan
GC Tuning Confessions Of A Performance Engineer
GC Tuning Confessions Of A Performance Engineer
Monica Beckwith
Data Warehousing with Amazon Redshift
Data Warehousing with Amazon Redshift
Amazon Web Services
ZGC-SnowOne.pdf
ZGC-SnowOne.pdf
Monica Beckwith
Similar to Garbage First Garbage Collector: Where the Rubber Meets the Road!
(20)
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
Game of Performance: A Song of JIT and GC
Game of Performance: A Song of JIT and GC
The Performance Engineer's Guide To (OpenJDK) HotSpot Garbage Collection - Th...
The Performance Engineer's Guide To (OpenJDK) HotSpot Garbage Collection - Th...
淺談 Java GC 原理、調教和新發展
淺談 Java GC 原理、調教和新發展
G1 collector and tuning and Cassandra
G1 collector and tuning and Cassandra
Java 9: The (G1) GC Awakens!
Java 9: The (G1) GC Awakens!
Optimizing InfluxDB Performance in the Real World | Sam Dillard | InfluxData
Optimizing InfluxDB Performance in the Real World | Sam Dillard | InfluxData
GC Tuning Confessions Of A Performance Engineer - Improved :)
GC Tuning Confessions Of A Performance Engineer - Improved :)
Way Improved :) GC Tuning Confessions - presented at JavaOne2015
Way Improved :) GC Tuning Confessions - presented at JavaOne2015
1404 app dev series - session 8 - monitoring & performance tuning
1404 app dev series - session 8 - monitoring & performance tuning
The Performance Engineer's Guide To HotSpot Just-in-Time Compilation
The Performance Engineer's Guide To HotSpot Just-in-Time Compilation
JFokus Java 9 contended locking performance
JFokus Java 9 contended locking performance
G1GC
G1GC
Tuning Java GC to resolve performance issues
Tuning Java GC to resolve performance issues
Moving Toward Deep Learning Algorithms on HPCC Systems
Moving Toward Deep Learning Algorithms on HPCC Systems
Everything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @Twitter
Basics of JVM Tuning
Basics of JVM Tuning
GC Tuning Confessions Of A Performance Engineer
GC Tuning Confessions Of A Performance Engineer
Data Warehousing with Amazon Redshift
Data Warehousing with Amazon Redshift
ZGC-SnowOne.pdf
ZGC-SnowOne.pdf
More from Monica Beckwith
The ilities of software engineering.pptx
The ilities of software engineering.pptx
Monica Beckwith
QCon London.pdf
QCon London.pdf
Monica Beckwith
Enabling Java: Windows on Arm64 - A Success Story!
Enabling Java: Windows on Arm64 - A Success Story!
Monica Beckwith
Applying Concurrency Cookbook Recipes to SPEC JBB
Applying Concurrency Cookbook Recipes to SPEC JBB
Monica Beckwith
Intro to Garbage Collection
Intro to Garbage Collection
Monica Beckwith
OPENJDK: IN THE NEW AGE OF CONCURRENT GARBAGE COLLECTORS
OPENJDK: IN THE NEW AGE OF CONCURRENT GARBAGE COLLECTORS
Monica Beckwith
Java Performance Engineer's Survival Guide
Java Performance Engineer's Survival Guide
Monica Beckwith
More from Monica Beckwith
(7)
The ilities of software engineering.pptx
The ilities of software engineering.pptx
QCon London.pdf
QCon London.pdf
Enabling Java: Windows on Arm64 - A Success Story!
Enabling Java: Windows on Arm64 - A Success Story!
Applying Concurrency Cookbook Recipes to SPEC JBB
Applying Concurrency Cookbook Recipes to SPEC JBB
Intro to Garbage Collection
Intro to Garbage Collection
OPENJDK: IN THE NEW AGE OF CONCURRENT GARBAGE COLLECTORS
OPENJDK: IN THE NEW AGE OF CONCURRENT GARBAGE COLLECTORS
Java Performance Engineer's Survival Guide
Java Performance Engineer's Survival Guide
Recently uploaded
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
Slack Application Development 101 Slides
Slack Application Development 101 Slides
praypatel2
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Enterprise Knowledge
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Malak Abu Hammad
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
UK Journal
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Rafal Los
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Drew Madelung
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Recently uploaded
(20)
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Slack Application Development 101 Slides
Slack Application Development 101 Slides
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Garbage First Garbage Collector: Where the Rubber Meets the Road!
1.
Garbage First Garbage Collector:
Where The Rubber Meets The Road! -By Monica Beckwith Code Karam LLC @mon_beck; monica@codekaram.com 1
2.
©2017 CodeKaram About me •
Java performance engineer • President @Code Karam LLC • Partner @Extreme Performance Experts • I have worked with Oracle, Sun, AMD … • I used to work in the capacity of G1 GC performance lead @Oracle. 2
3.
©2017 CodeKaram Agenda • Background
on G1 GC • Heap regions - Regular and Humongous • Additional data structures • G1 GC phases 3
4.
©2017 CodeKaram Agenda • Tuning
considerations with G1 GC • Taming mixed GCs • Components of a G1 GC pause • Humongous object requirements • Fragmentation • Evacuation failures • Allocation rate and promotion rate 4
5.
G1 GC Background 5
6.
Regionalized Heap 6
7.
©2017 CodeKaram Traditional Java
Heap 7 Contiguous Java Heap Eden S0 S1 Old Generation
8.
©2017 CodeKaram Garbage First
GC - Heap Regions 8 Contiguous Java Heap Free Region Non-Free Region
9.
©2017 CodeKaram G1 GC
Heap Regions • Young Regions - Regions that contain objects in the Eden and Survivor Spaces • Old Regions - Regions that contain objects in the Old generation. • Humongous Regions - Regions that contain Humongous Objects. 9
10.
©2017 CodeKaram Eden Old Old Eden Old Survivor Humongous 10 Garbage
First GC - Heap Regions
11.
Humongous Objects 11
12.
©2017 CodeKaram Humongous Objects 12 An
old generation region A young generation region
13.
©2017 CodeKaram Humongous Objects 13 Object
< 50% of G1 region size Object >= 50% of G1 region size Object > G1 region size ??
14.
©2017 CodeKaram14 Object <
50% of G1 region size Humongous Objects
15.
©2017 CodeKaram15 Object >=
50% of G1 region size Humongous Objects
16.
©2017 CodeKaram16 Object >
G1 region size Humongous Objects
17.
©2017 CodeKaram17 Object NOT
Humongous Object Humongous Object Humongous -> Needs Contiguous Regions Humongous Objects
18.
G1 GC Maintenance 18
19.
Collection Set 19
20.
©2017 CodeKaram Collection Set •
A young collection set (CSet) will incorporate all the young regions • A mixed collection set will incorporate all the young regions and a few candidate old regions based on the “most garbage first” principle. 20
21.
©2017 CodeKaram Eden Old Old Eden Old Surv ivor CSet
during a young collection - 21 Collection Set
22.
©2017 CodeKaram Old Old Old CSet
during a mixed collection - Sur viv or Ol d Eden Eden 22 Collection Set
23.
Remembered Sets 23
24.
©2017 CodeKaram Remembered Sets •
Additional data structures to help with maintenance • Add a slight footprint overhead (~5%) 24
25.
©2017 CodeKaram • Maintain
and track incoming references into its region • old-to-young references • old-to-old references • Remembered sets have varying granularity based on the “popularity” of objects or regions. 25 Remembered Sets
26.
©2017 CodeKaram26 Figure 2.3
Remembered sets with incoming object references** <insert G1-Deep-Dive-Figure-3.tif> empty region young region old region incoming reference into a region incoming reference into an RSet’s owning region RSet for Region y RSet for Region z Region z Region x Region y RSet for Region x <insert G1-Deep-Dive-Figure-3.tif> Figure G1-Deep-Dive-Figure-3: RSet example for one young and two old regions. G1 GC has its way of handling such demands of popularity and it does so by changing the density of RSets. The density of RSets follow three levels of granularity namely; sparse, fine and coarse. For a popular region, the RSet would probably get coarsened to accommodate the pointers from various other regions. This will be reflected in the RSet scanning time for those regions. LEGENDS empty region young region old region incoming reference into a region incoming reference into an RSet’s owning region RSet for Region y RSet for Region z Region z Region x Region y RSet for Region x
27.
G1 GC Phases 27
28.
©2017 CodeKaram G1 GC
- Pause Histogram 28 Pausetimeinmilliseconds 0 30 60 90 120 Timestamps 3415 3416.3 3417.2 3418.4 3419 3422 3423.4 3432.2 3433.2 3436.8 3437.6 3438.9 3440 Young Collection Initial Mark Remark Cleanup Mixed Collection Occupancy == Initiating Heap Occupancy Percent
29.
A Young Collection 29
30.
©2017 CodeKaram The Garbage
First Collector Eden Old Old Eden Old Surv ivor E.g.: Current heap configuration - 30
31.
©2017 CodeKaram The Garbage
First Collector Eden Old Old Eden Old Surv ivor E.g.: During a young collection - 31
32.
©2017 CodeKaram The Garbage
First Collector Old Old Old E.g.: After a young collection - Sur viv or Ol d 32
33.
©2017 CodeKaram Old Old Old Sur viv or Ol d Eden
Eden Old The Garbage First Collector 33 E.g.: Current heap configuration -
34.
Marking Initiation 34
35.
©2017 CodeKaram Initiating Heap
Occupancy Percent 35 • Threshold to start the concurrent marking cycle to identify candidate old regions. • When old generation occupancy crosses this adaptive threshold. • Based on the total heap size.
36.
©2017 CodeKaram Initiating Heap
Occupancy Percent - Helpful Options 36 • -XX:InitiatingHeapOccupancyPercent=<p> • -XX:ConcGCThreads=<n>
37.
The Concurrent Marking Stages 37
38.
©2017 CodeKaram Stages of
Concurrent Marking 38 • Initial-mark • Root region scan • Concurrent mark • Remark / Final mark • Cleanup
39.
©2017 CodeKaram Class Unloading
with Concurrent Mark • With JDK 8 update 40, you have ClassUnloadingWithConcurrentMark, and unreachable classes can be unloaded during Remark. 39
40.
©2017 CodeKaram Old Old Old E.g.:
Reclamation of a garbage-filled region during the cleanup phase - Sur viv or Ol d Eden Eden Old The Garbage First Collector 40
41.
©2017 CodeKaram Old Old Old E.g.:
Reclamation of a garbage-filled region during the cleanup phase - Sur viv or Ol d Eden Eden The Garbage First Collector 41
42.
Incremental Compaction aka Mixed
Collection 42
43.
©2017 CodeKaram Old Old Old E.g.:
Current heap configuration - Sur viv or Ol d Eden Eden The Garbage First Collector 43
44.
©2017 CodeKaram Old Old Old E.g.:
During a mixed collection - Sur viv or Ol d Eden Eden The Garbage First Collector 44
45.
©2017 CodeKaram Old E.g.: After
a mixed collection - O l d Sur vivo r Old The Garbage First Collector 45
46.
Tuning Considerations with G1
GC 46
47.
Taming Mixed GCs 47
48.
©2017 CodeKaram Say, The young
collections are meeting your SLAs, but… The mixed collections are far too frequent and too many OR The mixed collections are blowing your SLAs 48 Why Tame Mixed Collections?
49.
©2017 CodeKaram49
50.
©2017 CodeKaram If meeting
the latency SLA is your only concern: Divide the expensive collection further into smaller inexpensive collections 50 What Can We Do?
51.
©2017 CodeKaram Adjusting Each
Mixed Collection 51 Minimum number of old regions to be included in the mixed collection set. Maximum number of old regions to be included in the mixed collection set.
52.
©2017 CodeKaram Adjusting Each
Mixed Collection 52 -XX:G1MixedGCCountTarget=<n> -XX:G1OldCSetRegionThresholdPercent=<p>
53.
©2017 CodeKaram If the
GC overhead is too high and you have heap to spare (after considering your humongous objects requirements): Remove the expensive regions from your collection set 53 What Can We Do?
54.
©2017 CodeKaram Eliminating Expensive
Old Regions From Mixed Collections • You could eliminate based on the liveness per old region • You could also eliminate expensive old regions towards the end of the sorted array 54
55.
©2017 CodeKaram Eliminating Expensive
Old Regions From Mixed Collections • -XX:G1MixedGCLiveThresholdPercent = <p> • -XX:G1HeapWastePercent = <p> 55
56.
Components of a
G1 GC Pause 56
57.
©2017 CodeKaram57
58.
©2017 CodeKaram Ideally, you
will see that most of your pause time is spent in copying live objects… 58 Major Contributor?
59.
©2017 CodeKaram59
60.
©2017 CodeKaram but, what
if that’s not the case? 60 Major Contributor?
61.
61
62.
©2017 CodeKaram , 0.4066560
secs] [Parallel Time: 354.9 ms, GC Workers: 48] [GC Worker Start (ms): Min: 4500060.2, Avg: 4500068.1, Max: 4500085.2, Diff: 24.9] [Ext Root Scanning (ms): Min: 0.0, Avg: 4.8, Max: 31.8, Diff: 31.8, Sum: 231.0] [Update RS (ms): Min: 0.0, Avg: 21.6, Max: 116.3, Diff: 116.3, Sum: 1036.3] [Processed Buffers: Min: 0, Avg: 4.9, Max: 29, Diff: 29, Sum: 234] [Scan RS (ms): Min: 0.0, Avg: 41.5, Max: 62.3, Diff: 62.2, Sum: 1992.1] [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.3] [Object Copy (ms): Min: 195.6, Avg: 233.1, Max: 261.1, Diff: 65.5, Sum: 11189.0] [Termination (ms): Min: 21.0, Avg: 45.6, Max: 74.4, Diff: 53.4, Sum: 2188.5] [GC Worker Other (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 4.8] [GC Worker Total (ms): Min: 329.6, Avg: 346.7, Max: 354.7, Diff: 25.1, Sum: 16642.0] [GC Worker End (ms): Min: 4500414.7, Avg: 4500414.8, Max: 4500415.0, Diff: 0.2] 62
63.
©2017 CodeKaram [Code Root
Fixup: 0.1 ms] [Code Root Migration: 0.2 ms] [Clear CT: 1.4 ms] [Other: 50.1 ms] [Choose CSet: 0.0 ms] [Ref Proc: 34.6 ms] [Ref Enq: 0.3 ms] [Free CSet: 7.5 ms] 63
64.
©2017 CodeKaram [Code Root
Fixup: 0.1 ms] [Code Root Migration: 0.2 ms] [Clear CT: 1.4 ms] [Other: 50.1 ms] [Choose CSet: 0.0 ms] [Ref Proc: 34.6 ms] [Ref Enq: 0.3 ms] [Free CSet: 7.5 ms] 64
65.
©2017 CodeKaram , 0.4066560
secs] [Parallel Time: 354.9 ms, GC Workers: 48] [GC Worker Start (ms): Min: 4500060.2, Avg: 4500068.1, Max: 4500085.2, Diff: 24.9] [Ext Root Scanning (ms): Min: 0.0, Avg: 4.8, Max: 31.8, Diff: 31.8, Sum: 231.0] [Update RS (ms): Min: 0.0, Avg: 21.6, Max: 116.3, Diff: 116.3, Sum: 1036.3] [Processed Buffers: Min: 0, Avg: 4.9, Max: 29, Diff: 29, Sum: 234] [Scan RS (ms): Min: 0.0, Avg: 41.5, Max: 62.3, Diff: 62.2, Sum: 1992.1] [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.3] [Object Copy (ms): Min: 195.6, Avg: 233.1, Max: 261.1, Diff: 65.5, Sum: 11189.0] [Termination (ms): Min: 21.0, Avg: 45.6, Max: 74.4, Diff: 53.4, Sum: 2188.5] [GC Worker Other (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 4.8] [GC Worker Total (ms): Min: 329.6, Avg: 346.7, Max: 354.7, Diff: 25.1, Sum: 16642.0] [GC Worker End (ms): Min: 4500414.7, Avg: 4500414.8, Max: 4500415.0, Diff: 0.2] 65
66.
66 Plot Showing Max
Times
67.
67 Plot Showing Avg
Times
68.
Humongous Objects Requirements 68
69.
©2017 CodeKaram Ideally, humongous
objects are few in number and are short lived. A lot of long-lived humongous objects can cause evacuation failures since humongous regions add to the old generation occupancy. 69 Humongous Objects
70.
©2017 CodeKaram70 Object NOT
Humongous Object Humongous Object Humongous -> Needs Contiguous Regions Humongous Objects
71.
©2017 CodeKaram Humongous Objects: •
Are allocated out of the old generation • Are not moved *Note: Since JDK8 update 40, they can be collected during a young collection 71 So, What Did We Observe?
72.
©2017 CodeKaram72 Object NOT
Humongous Object Humongous Object Humongous -> Needs Contiguous Regions Wasted Space! Humongous Objects
73.
©2017 CodeKaram Humongous objects
can pose the following issues: Wasted space Evacuation failures due to not having enough (to-space) regions 73 So, What Did We Observe?
74.
Fragmentation In The G1
Collector 74
75.
©2017 CodeKaram • G1
GC is designed to “absorb” some fragmentation. • Default is 5% of the total Java heap • Tradeoff so that expensive regions are left out. G1 Heap Waste Percentage 75
76.
©2017 CodeKaram G1 Mixed
GC (Region) Liveness Threshold 76 • G1 GC’s old regions are also designed to “absorb” some fragmentation. • Default is 85% liveness in a G1 region. • Tradeoff so that expensive regions are left out.
77.
©2017 CodeKaram Humongous Objects 77 •
Wasted space! • External fragmentation!
78.
©2017 CodeKaram Humongous Objects 78 •
Wasted space! • External fragmentation!
79.
©2017 CodeKaram Fragmentation Can
Lead To Evacuation Failures! 79
80.
Promotion/Evacuation Failures In The
G1 Collector 80
81.
©2017 CodeKaram Evacuation Failures 81 276.731:
[GC pause (G1 Evacuation Pause) (young) (to-space exhausted), 0.8272932 secs] [Parallel Time: 387.0 ms, GC Workers: 8] <snip> [Code Root Fixup: 0.1 ms] [Code Root Purge: 0.0 ms] [Clear CT: 0.2 ms] [Other: 440.0 ms] [Evacuation Failure: 437.5 ms] [Choose CSet: 0.0 ms] [Ref Proc: 0.1 ms] [Ref Enq: 0.0 ms] [Redirty Cards: 0.9 ms] [Humongous Reclaim: 0.0 ms] [Free CSet: 0.9 ms] [Eden: 831.0M(900.0M)->0.0B(900.0M) Survivors: 0.0B->0.0B Heap: 1020.1M(1024.0M)- >1020.1M(1024.0M)] [Times: user=3.64 sys=0.20, real=0.83 secs] **
82.
©2017 CodeKaram • When
there are no more regions available for survivors or tenured objects, G1 GC encounters an evacuation failure. • An evacuation failure is expensive and the usual pattern is that if you see a couple of evacuation failures; full GC could* soon follow. 82 Evacuation Failures
83.
©2017 CodeKaram A heavily
tuned JVM command line may be restricting the G1 GC ergonomics and adaptability. Start with just your heap sizes and a reasonable pause time goal 83 Avoiding Evacuation Failures
84.
©2017 CodeKaram Your live
data set + long live transient data may be too large for the old generation Check LDS+ and increase heap to accommodate everything in the old generation. 84 Avoiding Evacuation Failures
85.
©2017 CodeKaram Initiating Heap
Occupancy Threshold could be the issue. Check IHOP and make sure it accommodates the LDS+. IHOP threshold too high -> Delayed marking -> Delayed incremental compaction -> Evacuation Failures! 85 Avoiding Evacuation Failures
86.
©2017 CodeKaram Marking Cycle
could be taking too long to complete? Increase concurrent marking threads Reduce IHOP 86 Avoiding Evacuation Failures
87.
©2017 CodeKaram to-space survivors
are the problem? Increase the G1ReservePercent, if to-space survivors are triggering the evacuation failures! 87 Avoiding Evacuation Failures
88.
88
89.
89
90.
90
91.
©2017 CodeKaram • 487.817:
[G1Ergonomics (Heap Sizing) attempt heap expansion, reason: region allocation request failed, allocation request: 524280 bytes] • 487.817: [G1Ergonomics (Heap Sizing) expand the heap, requested expansion amount: 524280 bytes, attempted expansion amount: 1048576 bytes] • 487.817: [G1Ergonomics (Heap Sizing) did not expand the heap, reason: heap already fully expanded] • 487.888: [G1Ergonomics (Heap Sizing) attempt heap expansion, reason: recent GC overhead higher than threshold after GC, recent GC overhead: 28.40 %, threshold: 10.00 %, uncommitted: 0 bytes, calculated expansion amount: 0 bytes (20.00 %)] 91
92.
©2017 CodeKaram • 487.817:
[G1Ergonomics (Heap Sizing) attempt heap expansion, reason: region allocation request failed, allocation request: 524280 bytes] • 487.817: [G1Ergonomics (Heap Sizing) expand the heap, requested expansion amount: 524280 bytes, attempted expansion amount: 1048576 bytes] • 487.817: [G1Ergonomics (Heap Sizing) did not expand the heap, reason: heap already fully expanded] • 487.888: [G1Ergonomics (Heap Sizing) attempt heap expansion, reason: recent GC overhead higher than threshold after GC, recent GC overhead: 28.40 %, threshold: 10.00 %, uncommitted: 0 bytes, calculated expansion amount: 0 bytes (20.00 %)] 92
93.
93
94.
Allocation and Promotion Rates 94
95.
©2017 CodeKaram Plot Allocation
& Promotion Rates 95
96.
©2017 CodeKaram96 Young Occupancy
before GC Young Gen Size Old Gen Occupancy after GC Heap Occupancy before GC Heap Occupancy after GC Heap Size Timestamps