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

G1: partially-young GCs not initiated under certain circumstances

XMLWordPrintable

    • gc
    • b03
    • generic
    • generic
    • Not verified

        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.

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

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: