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

G1: partially-young GCs not initiated under certain circumstances

    XMLWordPrintable

Details

    • gc
    • b03
    • generic
    • generic
    • Not verified

    Backports

      Description

        It looks as if G1 does not always initiate partially-young GCs after a concurrent marking cycle. The flag that initiates partially-young GCs is _last_full_young_gc (it means: the next GC will be the last young GC and we'll do partially-young ones after that) and it's set in record_concurrent_mark_cleanup_completed(). This is called at the end of concurrent cleanup:

              // Check if cleanup set the free_regions_coming flag. If it
              // hasn't, we can just skip the next step.
              if (g1h->free_regions_coming()) {
                ...

                _sts.join();
                g1_policy->record_concurrent_mark_cleanup_completed();
                _sts.leave();
              }

        Note, however, that unfortunately it's only called if free_regions_coming() is true, which is only true if cleanup found totally empty regions to reclaim.

        Many thanks to Thomas Schatzl for bringing this up.

        Attachments

          Issue Links

            Activity

              People

                tonyp Tony Printezis
                tonyp Tony Printezis
                Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: