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

Make CDS archived heap regions usable even if compressed oop encoding has changed


    • Type: Enhancement
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: 11
    • Fix Version/s: 12
    • Component/s: hotspot
    • Labels:
    • Subcomponent:
    • Resolved In Build:


      At runtime, if you use a maximum heap size (-Xmx) setting that's different than the one used at CDS archive creation time, the archived heap regions may fail to map. The reason is the archived heap regions are hard-coded to a specific compressed oop encoding scheme

      This causes degradation in start-up.

      For the related code, see:


      To fix this, we should patch/relocate the archived heap regions to make it compatible with the runtime compressed oop encoding. Preliminary result is encouraging.

      Test case:

      # dump archive
      java -Xshare:dump -Xmx2000m

      # same compressed oop encoding
      java -Xshare:on -Xmx2000m -Xlog:cds -version

      # different compressed oop encoding
      java -Xshare:on -Xmx2090m -Xlog:cds -version

      (The archive is dumped with UnscaledNarrowOop mode. At run time, if -Xmx2090m is specified, ZeroBasedNarrowOop is used instead).

      OLD same 34.45 ms +- 0.51%
      OLD diff 47.76 ms +- 0.61% <<<<< 13.3 ms degradation!
      NEW same 34.58 ms +- 0.94%
      NEW diff 35.09 ms +- 0.24%

      Patch: http://cr.openjdk.java.net/~iklam/jdk12/8208658-relocate-archived-heap-regions.v00/

      Note that without this fix, start-up time degrades 13.3ms when compressed oop encoding has changed. With this fix, the degradation is only 0.5ms, which is the cost of relocating/patching the archived heap regions.


          Issue Links



              • Assignee:
                iklam Ioi Lam
                iklam Ioi Lam
              • Votes:
                0 Vote for this issue
                1 Start watching this issue


                • Created: