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

Remove CMS foreground collection


    • Type: Enhancement
    • Status: Closed
    • Priority: P2
    • Resolution: Duplicate
    • Affects Version/s: None
    • Fix Version/s: 9
    • Component/s: hotspot
    • Labels:
    • Subcomponent:


      The foreground collections in CMS make the code very complex. The state transitions are very complex.

      A STW foreground collection can pick up where a concurrent background collection left off to try to avoid a full GC. This is nice but normally it has worse performance than a full GC.

      Also, to enable foreground collections the either of UseCMSCompactAtFullCollection or CMSFullGCsBeforeCompaction has to be set correctly on the command line ( CMSCollector::decide_foreground_collection_type()).

      This means that foreground collections are most likely not being used a lot.

      Here is some background from an email conversation with Jon Masamitsu:

      "I cannot point to a particular customer but I think it was
      CBOE that had CMSFullGCsBeforeCompaction
      set on its command line. I talked to them about it
      and they said that they considered a full GC as
      a failure and if they could avoid it by continuing the
      collection in the foreground, then they had a chance
      of surviving without the full GC. Of course, the issue
      is the pause time and if the collection in the foreground
      took a long time to finish, then it was still a failure but
      once in a while it was not.

      Having said that I think that it performs very poorly
      and should be fixed or removed. A collection in the
      foreground takes much longer than a full GC whenever
      I've seen it happen. The foreground collection should
      only be done if CMS is currently sweeping and I
      really think it will be effective if sweeping is made

      So, the suggestion is to remove the support for foreground collections and instead introduce a mechanism for doing the sweeping in a STW parallel fashion if we have to. This enhancement request should focus on removing the foreground collection. After JDK-6798836 has been implemented we can add the feature to do STW parallel sweeping.


          Issue Links



              • Assignee:
                brutisso Bengt Rutisson (Inactive)
              • Votes:
                0 Vote for this issue
                1 Start watching this issue


                • Created: