JDK-8365040 : G1: Remove sorting at end of collection set selection
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2025-08-07
  • Updated: 2025-08-28
  • Resolved: 2025-08-25
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 26
26 b13Fixed
Related Reports
Causes :  
Description
Currently G1 sorts the collection set candidates after collection set selection to avoid freeing the collection set taking a long time (introduced in JDK-8165313).

In a later change the cause for this long pause has been fixed (JDK-8165443), but the sorting not removed.

Finally, remove the unnecessary sorting.

According to these CRs, running gcbasher with  -Xmx20G -Xms20G -XX:G1HeapRegionSize=1m -XX:G1NewSizePercent=70 -XX:G1MaxNewSizePercent=85 makes G1 pauses take a long time.

Current log output shows that there is no difference with or without the sorting, showing the "Free Collection Set" and "Rebuild Free List" phases before and after the change:

Rebuild free list:
```
before:[6.847s][debug][gc,phases] GC(0)     Rebuild Free List: 0.31ms
before:[10.499s][debug][gc,phases] GC(1)     Rebuild Free List: 0.33ms
before:[14.120s][debug][gc,phases] GC(2)     Rebuild Free List: 0.32ms
before:[17.749s][debug][gc,phases] GC(3)     Rebuild Free List: 0.31ms
before:[21.376s][debug][gc,phases] GC(4)     Rebuild Free List: 0.30ms
before:[24.994s][debug][gc,phases] GC(5)     Rebuild Free List: 0.36ms
before:[28.652s][debug][gc,phases] GC(6)     Rebuild Free List: 0.29ms

after:[6.126s][debug][gc,phases] GC(0)     Rebuild Free List: 0.30ms
after:[9.718s][debug][gc,phases] GC(1)     Rebuild Free List: 0.30ms
after:[13.311s][debug][gc,phases] GC(2)     Rebuild Free List: 0.31ms
after:[16.901s][debug][gc,phases] GC(3)     Rebuild Free List: 0.31ms
after:[20.487s][debug][gc,phases] GC(4)     Rebuild Free List: 0.32ms
after:[24.070s][debug][gc,phases] GC(5)     Rebuild Free List: 0.31ms
after:[27.683s][debug][gc,phases] GC(6)     Rebuild Free List: 0.36ms
```
```
before:[6.847s][debug][gc,phases] GC(0)       Free Collection Set (ms):      Min: 0.07, Avg: 0.50, Max: 0.61, Diff: 0.55, Sum: 4.02, Workers: 8
before:[10.499s][debug][gc,phases] GC(1)       Free Collection Set (ms):      Min: 0.30, Avg: 0.36, Max: 0.45, Diff: 0.15, Sum: 2.86, Workers: 8
before:[14.120s][debug][gc,phases] GC(2)       Free Collection Set (ms):      Min: 0.07, Avg: 0.60, Max: 0.73, Diff: 0.66, Sum: 4.79, Workers: 8
before:[17.749s][debug][gc,phases] GC(3)       Free Collection Set (ms):      Min: 0.05, Avg: 0.50, Max: 0.64, Diff: 0.58, Sum: 4.01, Workers: 8
before:[21.376s][debug][gc,phases] GC(4)       Free Collection Set (ms):      Min: 0.06, Avg: 0.60, Max: 0.71, Diff: 0.65, Sum: 4.80, Workers: 8
before:[24.994s][debug][gc,phases] GC(5)       Free Collection Set (ms):      Min: 0.07, Avg: 0.77, Max: 0.93, Diff: 0.86, Sum: 6.18, Workers: 8
before:[28.652s][debug][gc,phases] GC(6)       Free Collection Set (ms):      Min: 0.06, Avg: 0.63, Max: 0.76, Diff: 0.70, Sum: 5.01, Workers: 8

after:[6.126s][debug][gc,phases] GC(0)       Free Collection Set (ms):      Min: 0.48, Avg: 0.59, Max: 0.71, Diff: 0.23, Sum: 4.69, Workers: 8
after:[9.718s][debug][gc,phases] GC(1)       Free Collection Set (ms):      Min: 0.05, Avg: 0.54, Max: 0.65, Diff: 0.60, Sum: 4.35, Workers: 8
after:[13.311s][debug][gc,phases] GC(2)       Free Collection Set (ms):      Min: 0.08, Avg: 0.37, Max: 0.46, Diff: 0.39, Sum: 2.92, Workers: 8
after:[16.901s][debug][gc,phases] GC(3)       Free Collection Set (ms):      Min: 0.49, Avg: 0.58, Max: 0.65, Diff: 0.16, Sum: 4.60, Workers: 8
after:[20.487s][debug][gc,phases] GC(4)       Free Collection Set (ms):      Min: 0.07, Avg: 0.61, Max: 0.73, Diff: 0.66, Sum: 4.90, Workers: 8
after:[24.070s][debug][gc,phases] GC(5)       Free Collection Set (ms):      Min: 0.36, Avg: 0.45, Max: 0.55, Diff: 0.20, Sum: 3.58, Workers: 8
after:[27.683s][debug][gc,phases] GC(6)       Free Collection Set (ms):      Min: 0.04, Avg: 0.38, Max: 0.50, Diff: 0.46, Sum: 3.01, Workers: 8
```
I.e. no difference.
Comments
Changeset: 7fa501e3 Branch: master Author: Thomas Schatzl <tschatzl@openjdk.org> Date: 2025-08-25 07:42:55 +0000 URL: https://git.openjdk.org/jdk/commit/7fa501e39874214c9bc7503c0bdb68d090245208
25-08-2025

A pull request was submitted for review. Branch: master URL: https://git.openjdk.org/jdk/pull/26676 Date: 2025-08-07 12:10:49 +0000
21-08-2025