-
Enhancement
-
Resolution: Fixed
-
P4
-
11, 17, 21, 22, 23
-
b18
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8330485 | 22.0.2 | Aleksey Shipilev | P4 | Resolved | Fixed | b04 |
JDK-8342960 | 21.0.7-oracle | Thomas Schatzl | P4 | Resolved | Fixed | master |
JDK-8329996 | 21.0.4 | Aleksey Shipilev | P4 | Resolved | Fixed | b01 |
JDK-8331110 | 17.0.12 | Aleksey Shipilev | P4 | Resolved | Fixed | b01 |
This tiny tests takes 30s with G1:
public class Test {
static int n = 847734685;
public static void main(String[] args) {
String[] strs = new String[n + 1];
}
}
A large portion of that time is spent inside this assert:
assert(!G1CollectedHeap::heap()->is_obj_dead_cond(_containing_obj, _vo), "Precondition");
which is called for every single oop in the _containing_obj. If I move this assert to where _containing_obj is initialized, the test now completes in 4-5 seconds.
- backported by
-
JDK-8329996 G1: Excessive is_obj_dead_cond calls in verification
- Resolved
-
JDK-8330485 G1: Excessive is_obj_dead_cond calls in verification
- Resolved
-
JDK-8331110 G1: Excessive is_obj_dead_cond calls in verification
- Resolved
-
JDK-8342960 G1: Excessive is_obj_dead_cond calls in verification
- Resolved
- links to
-
Commit openjdk/jdk17u-dev/10b427db
-
Commit openjdk/jdk21u-dev/8173c648
-
Commit openjdk/jdk22u/52915be3
-
Commit openjdk/jdk/29992e1f
-
Review openjdk/jdk17u-dev/2425
-
Review openjdk/jdk21u-dev/473
-
Review openjdk/jdk22u/132
-
Review openjdk/jdk/18595