JEP 248: Make G1 the Default Garbage CollectorJEP 248: Make G1 the Default Garbage CollectorOwnerStefan JohanssonTypeFeatureScopeJDKStatusClosed / DeliveredRelease9Componenthotspot / gcDiscussionhotspot dash dev at openjdk dot java dot netEffortMDurationMReviewed byMikael VidstedtEndorsed byMikael VidstedtCreated2015/02/16 19:58Updated2017/09/12 14:30Issue8073273Summary
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.


InstallingContributingSponsoringDevelopers' GuideVulnerabilitiesJDK GA/EA BuildsMailing listsWiki
                      · IRCBylaws · CensusLegalWorkshopJEP ProcessSource codeMercurialGitHubToolsGitjtreg harnessGroups(overview)AdoptionBuildClient LibrariesCompatibility & Specification ReviewCompilerConformanceCore LibrariesGoverning BoardHotSpotIDE Tooling & SupportInternationalizationJMXMembersNetworkingPortersQualitySecurityServiceabilityVulnerabilityWebProjects(overview,
      archive)AmberBabylonCRaCCaciocavalloClosuresCode ToolsCoinCommon VM InterfaceCompiler GrammarDetroitDevelopers' GuideDevice I/ODukeGalahadGraalIcedTeaJDK 7JDK 8JDK 8 UpdatesJDK 9JDK
      (…,
       21,
       22,
       23)JDK UpdatesJavaDoc.NextJigsawKonaKullaLambdaLanaiLeydenLilliputLocale EnhancementLoomMemory Model UpdateMetropolisMission ControlMulti-Language VMNashornNew I/OOpenJFXPanamaPenrosePort: AArch32Port: AArch64Port: BSDPort: HaikuPort: Mac OS XPort: MIPSPort: MobilePort: PowerPC/AIXPort: RISC-VPort: s390xPortolaSCTPShenandoahSkaraSumatraTiered AttributionTsanType AnnotationsValhallaVeronaVisualVMWakefieldZeroZGC

        © 2024 Oracle Corporation and/or its affiliates
        Terms of Use
        ·
        
            License: GPLv2
        · Privacy
        · Trademarks
