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

Preserving the referents of concurrent mark work distribution method causes long pause times

    XMLWordPrintable

Details

    • gc

    Description

      During reference processing in a gc pause (in G1CollectedHeap::process_discovered_references), we need to preserve (copy) reference objects that were discovered by the concurrent marking reference processor.

      We use the G1ParPreserveCMReferentsTask GangTask for that, always executing it using all threads but then internally let some threads just do nothing if there is not enough work to do.

      The problem with that method is, if you are on a large machine with tens of threads, and there is almost nothing to do during this phase (or even during the whole GC), starting up and waiting for that many threads takes a very significant fraction of gc pause time, e.g. half of object copy time.

      A much better way would be to determine the number of required threads at the outside, and only start up as many threads as required.

      Test case: GCOld

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              tschatzl Thomas Schatzl
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: