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

G1: Trigger concurrent start if humongous allocation needs the reserved space to avoid evac failure

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Duplicate
    • Icon: P4 P4
    • tbd
    • 16
    • hotspot
    • gc

      > Created on behalf of Liang Mao (maoliang.ml@alibaba-inc.com)

      This bug id is to propose new humongous objects allocation share the young space with eden allocation.
      Allocation in eden space and humongous allocation will share the free regions. The GC will be triggered when free_regions == reserve_regions. Initial mark will be triggered immediately if humongous allocation already invaded into _young_list_target_length.

      It could resolve following 2 issues:

      1) New allocated humongous objects could reach IHOP very quickly and lead to very frequent GCs.
      If new allocated humongous objects could use young space, the GC frequency will significantly drop.

      2) The humongous allocation could use regions very quickly. G1ReservePercent is used to be the allocation buffer to avoid to-space exhausted by humongous allocation or GC to-space copy and an initial mark will be triggered immediately if humongous occupancy beyond IHOP. But in the concurrent marking cycle or prepare to do mixed GCs, there're no any GC actions ahead to avoid completely full of heap. Triggering GC when there're not enough free regions(free_regions <= reserve_regions) can easily avoid such disasters.


      There could be more initial-marks after the change. So JDK-8240556 is a necessity to avoid uncessary concurrent marks.

            Unassigned Unassigned
            ddong Denghui Dong
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: