-
Type:
Enhancement
-
Resolution: Fixed
-
Priority:
P4
-
Affects Version/s: 17, 21, 22
-
Component/s: hotspot
-
b20
| Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
|---|---|---|---|---|---|---|
| JDK-8329500 | 21.0.4-oracle | Thomas Schatzl | P4 | Resolved | Fixed | b02 |
| JDK-8330658 | 21.0.4 | Goetz Lindenmaier | P4 | Resolved | Fixed | b01 |
During class unloading pending ICBuffer elements are put into a global pending queue to be released during a cleanup safepoint at some point later.
This is a simple linked list which is protected by the global InlineCacheBuffer_lock.
During code cache cleaning obtaining the lock is responsible for ~40% of total time clearing the ic callsites when unlinking is done in parallel (e.g. in G1, Shenandoah).
(Clearing ic callsites is the largest contributor of time spent even after the change)
A simple solution for this problem is to make the enqueuing lock free as cleaning the list is always done in the separate Cleanup safepoint.
This is a simple linked list which is protected by the global InlineCacheBuffer_lock.
During code cache cleaning obtaining the lock is responsible for ~40% of total time clearing the ic callsites when unlinking is done in parallel (e.g. in G1, Shenandoah).
(Clearing ic callsites is the largest contributor of time spent even after the change)
A simple solution for this problem is to make the enqueuing lock free as cleaning the list is always done in the separate Cleanup safepoint.
- backported by
-
JDK-8329500 Improve InlineCacheBuffer pending queue management
-
- Resolved
-
-
JDK-8330658 Improve InlineCacheBuffer pending queue management
-
- Resolved
-
- relates to
-
JDK-8326092 Pause Remark sometimes has extremely long pause times on class unloading
-
- Closed
-
- links to
-
Commit
openjdk/jdk21u-dev/41c8606e
-
Commit
openjdk/jdk/c9985720
-
Review
openjdk/jdk21u-dev/453
-
Review
openjdk/jdk/16059
(2 links to)