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.") \
- \
```