-
Type:
CSR
-
Resolution: Approved
-
Priority:
P4
-
Component/s: hotspot
-
None
-
behavioral
-
minimal
-
Searching for affected flag doesn't return any blog posts/tutorials covering or suggesting using or changing it with Parallel GC. The manual suggests keeping the default value.
-
add/remove/modify command line option
-
JDK
Summary
Obsolete the VM product option ScavengeBeforeFullGC due to removal of corresponding functionality.
Problem
The ScavengeBeforeFullGC flag executes a (fast) Young GC pause before execution of a Full GC. This groups live objects together so that the Full GC has less work left to do when a reasonable part of the heap is already compacted. Only Parallel GC enables this option by default.
This optimization can be (or was) effective when Parallel GC Full GC was single-threaded and there has been CMS' full gc that has always been executed in serial. At this time, CMS has been removed and Parallel Full GC is always multi-threaded and can handle fragmented heap well. The extra Young GC pause unnecessarily increases total pause time with little gain.
Solution
Remove the functionality and obsolete the VM product option ScavengeBeforeFullGC without any deprecation period.
Specification
- product(bool, ScavengeBeforeFullGC, true, \
- "Scavenge youngest generation before each full GC.") \
- \
- csr of
-
JDK-8330670 Obsolete ScavengeBeforeFullGC
-
- Resolved
-