JDK-6976060 : G1: humongous object allocations should initiate marking cycles when necessary
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs19
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2010-08-10
  • Updated: 2013-10-04
  • Resolved: 2012-03-24
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.
JDK 7 JDK 8 Other
7u4Fixed 8Fixed hs23Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Currently, we only decide whether to initiate a marking cycle at the end of an evacuation pause. This works well most of the time. However, if an application performs a lot of humongous object allocations the heap could grow quite rapidly but we will not initiate a marking cycle unless we also do an evacuation pause. This might cause a Full GC which we might be able to prevent if we initiated a marking cycle during the humongous allocations.

This CR proposes to extend the humongous object allocation path to also check the heap occupancy and initiate a marking cycle when / if needed. Given that in G1 we can only initiate marking cycles after doing an evacuation pause, we'll probably have to schedule an evacuation pause with a piggy-backed initial-mark for the marking cycle to start.

EVALUATION http://hg.openjdk.java.net/lambda/lambda/hotspot/rev/9509c20bba28

EVALUATION http://hg.openjdk.java.net/hsx/hotspot-gc/hotspot/rev/9509c20bba28