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

Large eden prevents collecting the old gen due to too conservative estimation of eden live bytes

    Details

    • Subcomponent:
      gc

      Description

      G1 tries to avoid taking too many old gen regions during evacuation to avoid evacuation failure.

      It does so by estimating the amount of space the young gen evacuation will take, and subtracting this value from the available free bytes. If the old gen region will still fit, it takes the region, otherwise it will stop adding region to the collection set.

      Now if the young gen is > 50% (by e.g. setting G1NewSizePercent > 50), the amount of space taken by the current young gen plus that estimation of the liveness is > 100% of the heap. That means G1 will never evacuate old gen regions, leading to full gc.

      JDK-8142935 introduced this code.

        Issue Links

          Activity

          Hide
          jprovino Joseph Provino (Inactive) added a comment -
          It looks like the fix for this caused this new problem:

          JDK-8142935
          Adding old gen regions does not consider available free space
          Show
          jprovino Joseph Provino (Inactive) added a comment - It looks like the fix for this caused this new problem: JDK-8142935 Adding old gen regions does not consider available free space

            People

            • Assignee:
              Unassigned
              Reporter:
              tschatzl Thomas Schatzl
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: