RFR: 8071277: G1: Merge commits and uncommits of contiguous memory

Thomas Schatzl tschatzl at openjdk.org
Fri Sep 19 09:34:40 UTC 2025


Hi all,

  please review this change to G1 commit/uncommit to merge commit/uncommit calls to the operating system as much as possible. This significantly improves startup performanc

Performance results before/after on Zen3 processor for a "HelloWorld" application:


 $ hyperfine -w 10 -r 10 "baseline/bin/java -XX:+UseG1GC -Xms128m -Xmx128m Hello"
Benchmark 1: baseline/bin/java -XX:+UseG1GC -Xms128m -Xmx128m Hello
  Time (mean ± σ): 16.4 ms ± 0.4 ms [User: 11.0 ms, System: 14.4 ms]
  Range (min … max): 15.7 ms … 16.8 ms 10 runs

$ hyperfine -w 10 -r 10 "baseline/bin/java -XX:+UseG1GC -Xms2g -Xmx2g Hello"
Benchmark 1: baseline/bin/java -XX:+UseG1GC -Xms2g -Xmx2g Hello
  Time (mean ± σ): 24.7 ms ± 0.4 ms [User: 10.7 ms, System: 22.7 ms]
  Range (min … max): 24.2 ms … 25.4 ms 10 runs

My reimplementation of JDK-8071277 does show improvements here:

$ hyperfine -w 10 -r 10 "changes/bin/java -XX:+UseG1GC -Xms128m -Xmx128m Hello"
Benchmark 1: changes/bin/java -XX:+UseG1GC -Xms128m -Xmx128m Hello
  Time (mean ± σ): 15.9 ms ± 0.4 ms [User: 11.9 ms, System: 13.1 ms]
  Range (min … max): 15.4 ms … 16.7 ms 10 runs

$ hyperfine -w 10 -r 10 "changes/bin/java -XX:+UseG1GC -Xms2g -Xmx2g Hello"
Benchmark 1: changes/bin/java -XX:+UseG1GC -Xms2g -Xmx2g Hello
  Time (mean ± σ): 19.7 ms ± 0.3 ms [User: 11.3 ms, System: 17.4 ms]
  Range (min … max): 19.2 ms … 20.1 ms 10 runs


I.e., depending on actually committed heap size (`-Xms`), reduction of startup time by 20% or so in above cases.

Testing: tier1-5, gha

Thanks,
  Thomas

-------------

Commit messages:
 - 8071277

Changes: https://git.openjdk.org/jdk/pull/27381/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27381&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8071277
  Stats: 87 lines in 3 files changed: 69 ins; 8 del; 10 mod
  Patch: https://git.openjdk.org/jdk/pull/27381.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27381/head:pull/27381

PR: https://git.openjdk.org/jdk/pull/27381


More information about the hotspot-gc-dev mailing list