JEP 248: Make G1 the Default Garbage Collector
Owner | Stefan Johansson |
Type | Feature |
Scope | JDK |
Status | Closed / Delivered |
Release | 9 |
Component | hotspot / gc |
Discussion | hotspot dash dev at openjdk dot java dot net |
Effort | M |
Duration | M |
Reviewed by | Mikael Vidstedt |
Endorsed by | Mikael Vidstedt |
Created | 2015/02/16 19:58 |
Updated | 2017/09/12 14:30 |
Issue | 8073273 |
Summary
Make G1 the default garbage collector on 32- and 64-bit server configurations.
Motivation
Limiting GC pause times is, in general, more important than maximizing throughput. Switching to a low-pause collector such as G1 should provide a better overall experience, for most users, than a throughput-oriented collector such as the Parallel GC, which is currently the default.
Many performance improvements were made to G1 in JDK 8 and its update releases, and further improvements are planned for JDK 9. The introduction of concurrent class unloading (JEP 156) in JDK 8u40 made G1 a fully-featured garbage collector, ready to be the default.
Description
Changing the default collector is straightforward.
Risks and Assumptions
-
The change is based on the assumption that limiting latency is often more important than maximizing throughput. If this assumption is incorrect then this change might need to be reconsidered.
-
G1 is seen as a robust and well-tested collector. It is not expected to have stability problems, but becoming the default collector will increase its visibility and may reveal previously-unknown issues. If a critical issue is found that can't be addressed in the JDK 9 time frame, we will revert back to use Parallel GC as the default for the JDK 9 GA.
-
The resource usage of G1 is different from Parallel. When resource usage overhead needs to be minimized a collector other than G1 should be used, and after this change the alternate collector will have to be specified explicitly.