RFR: 8305995: Use full dominant search for regions [v3]
Kirill A. Korinsky
duke at openjdk.org
Fri Apr 14 19:14:36 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.
Kirill A. Korinsky has updated the pull request incrementally with one additional commit since the last revision:
Rename benchmark and add header
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/13453/files
- new: https://git.openjdk.org/jdk/pull/13453/files/dbc3ebf9..4cd22b60
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=13453&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=13453&range=01-02
Stats: 36 lines in 1 file changed: 33 ins; 0 del; 3 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