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.