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

Remove CMS foreground collection



    • Enhancement
    • Resolution: Duplicate
    • P2
    • 9
    • None
    • hotspot
    • None
    • gc


      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



              Unassigned Unassigned
              brutisso Bengt Rutisson (Inactive)
              0 Vote for this issue
              1 Start watching this issue