Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8330671

Obsolete ScavengeBeforeFullGC

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Approved
    • Icon: P4 P4
    • 23
    • hotspot
    • None
    • gc
    • 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.")              \
      -                                                                            \

            ayang Albert Yang
            ayang Albert Yang
            Thomas Schatzl
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: