RFR: 8305995: Use full dominant search for regions

Kirill A. Korinsky duke at openjdk.org
Fri Apr 14 09:37:35 UTC 2023


This is a fix for the regression introduced by da43cb5e463069cf4dafb262664f0d3d7c2e0eac in fix 8224957.

This regression was found while attempting to migrate an application from JDK 1.8 to JDK 17, by running internal benchmarks, and while investigating abnormal memory usage for about 4 times more from one of them.

The regression appears in the JMH benchmark, which builds a huge tree which contains boxed integers from 0 to a few thousand. A tree has very complex structure and the same objects are reused a lot.

When an `integer` is found it's collected as `Integer` and unboxed inside the collector callback.

This benchmark was run with `ParallelGC` on different JVMs: `JDK 1.8.0_362`, `JDK 11.0.18`, `JDK 13.0.13`, `JDK 15.0.9`, `JDK 17.0.6`, `JDK 19.0.2` and `JDK 20`. This allows to see that something has changed between 13 and 15, and that the memory footprint for this code has increased from `3152` to `11828` bytes per operation.

After that I've done a `git bisect` which allows me to locate the introducer.

So the current fix reduces the memory footprint on the local root 425ef0685c584abec80454fbcccdcc6db6558f93 to `2960` bytes per operation.

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

Commit messages:
 - Use full dominant search for regions

Changes: https://git.openjdk.org/jdk/pull/13453/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13453&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8305995
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/13453.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13453/head:pull/13453

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


More information about the hotspot-compiler-dev mailing list