Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8017752 | 8 | John Cuthbertson | P4 | Resolved | Fixed | b96 |
JDK-8020243 | 7u60 | John Cuthbertson | P4 | Resolved | Fixed | b01 |
JDK-8019893 | 7u45 | John Cuthbertson | P4 | Closed | Fixed | b02 |
JDK-8019605 | 7u40 | John Cuthbertson | P4 | Closed | Fixed | b32 |
JDK-8016915 | hs25 | John Cuthbertson | P4 | Resolved | Fixed | b38 |
With some work loads we have seen the scanning of the string table to be the main dominator of the GC and the other worker threads wait in the termination protocol until the thread that successfully claims the string table completes the scan.
A better approach is to have multiple GC worker threads scan the table in parallel - similar to how we use multiple GC worker threads to scan the Java threads' stacks.
The string table is a regular hash table with each bucket being the head of a singly linked list. A simple approach would be to have each participating worker claim a chunk of buckets and scan the strings in those buckets. This still has the potential of having unbalanced scan times if the lengths of the bucket chains are massively unbalanced. Fortunately this does not seem to be a problem for the hash functions and we see a more or less uniform distribution.
- backported by
-
JDK-8016915 Parallelize string table scanning during strong root processing
-
- Resolved
-
-
JDK-8017752 Parallelize string table scanning during strong root processing
-
- Resolved
-
-
JDK-8020243 Parallelize string table scanning during strong root processing
-
- Resolved
-
-
JDK-8019605 Parallelize string table scanning during strong root processing
-
- Closed
-
-
JDK-8019893 Parallelize string table scanning during strong root processing
-
- Closed
-
- relates to
-
JDK-8015422 Large performance hit when the StringTable is walked twice in Parallel Scavenge
-
- Resolved
-
-
JDK-8004888 G1: PSR large heap case shows steady increase in ART
-
- Closed
-