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

G1: partially-young GCs not initiated under certain circumstances

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: hs23
    • Fix Version/s: hs23
    • Component/s: hotspot
    • Subcomponent:
      gc
    • Resolved In Build:
      b03
    • CPU:
      generic
    • OS:
      generic
    • Verification:
      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

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

                  Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: