RFR: 8306541: Refactor collection set candidate handling to prepare for JDK-8140326

Thomas Schatzl tschatzl at openjdk.org
Wed Apr 26 09:51:28 UTC 2023


Hi all,

  please review this refactoring of collection set candidate set handling.

The idea is to improve the interface to collection set candidates and prepare for having collection set candidates available at any time to evacuate them at any young collection.

These preparations to allow for multiple sources for these candidates (from the marking, as now, and from retained regions, i.e. evacuation failed regions as per [JDK-8140326](https://bugs.openjdk.org/browse/JDK-8140326)).

This patch only uses candidates from marking at this time.
 
Also moves gc efficiency out of HeapRegion and associate it to the list element as it's not used otherwise.
    
In detail:
    * the collection set candidates set is not temporarily allocated any more, but the candidate collection set object is available all the time.
    
    * G1CollectionSetCandidates is the main class, representing the current candidates. Contains the "from marking" candidate list only (at this point).
    
    * there are several additional helper sets/lists
      * G1CollectionSetRegionList: list of HeapRegion*, typically sorted by efficiency (but not necessarily). Also does not contain gc efficiences.
      * G1CollectionCandidateList: list of candidates, i.e. HeapRegion* with their gc efficiency. Building block for the actual collection set candidates list.
    
All these sets implement C++ iterators for simpler use in various places.
    
Testing:
 - this patch only: tier1-3, gha
 - with JDK-8140326 tier1-7 (or 8?)

Thanks,
  Thomas

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

Commit messages:
 - Whitespace fixes
 - typo
 - More cleanup
 - Cleanup
 - Cleanup
 - Refactor collection set candidates

Changes: https://git.openjdk.org/jdk/pull/13666/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13666&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8306541
  Stats: 1137 lines in 26 files changed: 659 ins; 231 del; 247 mod
  Patch: https://git.openjdk.org/jdk/pull/13666.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13666/head:pull/13666

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


More information about the hotspot-gc-dev mailing list