JDK-8057781 : Start mixed GC on the next GC after marking cycle completed
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2014-09-08
  • Updated: 2019-02-11
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Related Reports
Relates :  
The G1 collection cycle does an additional young-only GC between the cleanup pause and the first mixed gc. In some cases, in relatively tight heaps, this makes the mixed gcs start too late, causing to-space overflows and in the end results in undesired full gcs.

There does not seem to be a good reason to do the young-only gc after GC cleanup at all.

Fix this to switch to mixed gcs right after the marking cycle completes.

An "intermediate" fix could be to decrease the IHOP slightly.

A program that shows this problem is e.g. CRM Fuse.
So one could only do this if we made sure that MMU constraints are satisfied too.

The reason for the young-only gc after marking is that - the young gen might be too large to fit into the pause time - a mixed gc might screw up MMU calculations

Another case, in Spark workload, after marking, a bunch of humongous objects are allocated, leading to full gc.