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

G1: UseCompressedOops boundary is calculated on maximum heap region size instead of maxiumum ergonomic heap region size

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • 25
    • 18
    • hotspot
    • gc

      on behalf of tobytbzhang@tencent.com

      After JDK-8275056, The max heap region size became 512M, and the calculation of CompressedOops based on the max_heap_size - max_heap_region_size.
      So before this patch, the CompressedOops will turn on below 32G - 32m, After this patch is 32G -512m.

      When our Apps migrating from JDK11 to JDK21, the heap size parameters(Xmx32736m) will turn off the CompressedOops.

      Since the current max ergonomics size is still 32m, We hoped that the original behavior will not be changed if HeapRegionSize is not explicitly set.

      before this patch:
      ./build/linux-x86_64-server-release/images/jdk/bin/java -Xmx32736m -XX:+PrintFlagsFinal -version | grep CompressedOops
           bool UseCompressedOops = false {product lp64_product} {default}
      openjdk version "25-internal" 2025-09-16
      OpenJDK Runtime Environment (build 25-internal-adhoc.root.jdk)
      OpenJDK 64-Bit Server VM (build 25-internal-adhoc.root.jdk, mixed mode, sharing)

      after fix:
      ./build/linux-x86_64-server-release/images/jdk/bin/java -Xmx32736m -XX:+PrintFlagsFinal -version | grep CompressedOops
           bool UseCompressedOops = true {product lp64_product} {ergonomic}
      openjdk version "25-internal" 2025-09-16
      OpenJDK Runtime Environment (build 25-internal-adhoc.root.jdk)
      OpenJDK 64-Bit Server VM (build 25-internal-adhoc.root.jdk, mixed mode, sharing)

            pxie Peng Xie
            pxie Peng Xie
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: