RFR: 8365199: Use a set instead of a list as the intermediary Klass* storage to reduce typeset processing [v7]

Markus Grönlund mgronlun at openjdk.org
Thu Aug 14 14:34:57 UTC 2025


> Greetings,
> 
> This change set is a performance improvement to speed up JFR typeset processing.
> 
> It accomplishes this by using a set instead of a list as the intermediary Klass* storage.
> 
> Further, the existing JfrSet implementation (currently backed by a linked-list ResizeableResourceHashTable) is optimized to use instead a slimmed open-addressing implementation, premised on the invariant that our sets are key sets. 
> 
> Running the test program attached to the JIRA issue results in a 100% performance improvement in total running time (by reducing the work set of Klass: es being processed by the JFR Recorder Thread).
> 
> Testing: jdk_jfr, stress tests
> 
> Thanks
> Markus

Markus Grönlund has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 10 commits:

 - Merge branch 'master' of https://git.openjdk.org/jdk into 8365199
 - merge error
 - Merge branch '8365199' of github.com:mgronlun/jdk into 8365199
 - less than or equal to max_initial_size
 - use load factor instead of probe sequence
 - const
 - increase possible maxsize and extend probe sequence
 - improved typedef usage and static assert
 - adjustment
 - 8365199

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

Changes: https://git.openjdk.org/jdk/pull/26733/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26733&range=06
  Stats: 350 lines in 11 files changed: 175 ins; 74 del; 101 mod
  Patch: https://git.openjdk.org/jdk/pull/26733.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26733/head:pull/26733

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


More information about the hotspot-jfr-dev mailing list