-
Enhancement
-
Resolution: Fixed
-
P4
-
12
-
b16
Some of these issues have been pointed out in reviews, but moved for later.
There are a quite a few opportunities to clean up the code:
- the optional collection set evacuation duplicates quite a bit of "first pass" evacuation code while conceptually very similar. This should be unified and cleaned up as much as possible.
- with the optional collection set the code creates copies of parts of the candidate collection set, first popping it from it and then pushing back leftovers. This is not necessary, an index (cursor) within the candidate collection set is sufficient.
Some imho benign real issues with the current implementation, that are partially caused by the code duplication:
- if there is an evacuation failure during evacuating an optional part, we try to fix up self-looped oops for the entire collection set which is not necessary. Obviously only regions part of the current collection pass need to be looked at.
- the work distribution when evacuating an optional collection set is bad: every thread processes the same regions in the same sequence
- calculation of total number of cards scanned and total scan RS time does not take optional evacuation into account
- optional collection set log does not show code roots time (from the heap region's remembered sets) and termination time completely
- optional collection also does not add "code root fixup time"
- optional collection does not add to the "par time" (which is actually the time for the parallel evacuation), which means that the calculation for the "Other" time is wrong (result too high) impacting prediction (being too conservative)
- the opt_index_in_cset of a heap region is not reset for all regions every time after GC. Since it is properly overwritten as needed this seems benign.
Note that since the amount of optional regions/additional passes over the remembered set are typically rather small, there is no real performance problem.
- duplicates
-
JDK-8153505 Split up G1RemSet::oops_into_collection_set_do into parts
-
- Closed
-
- is blocked by
-
JDK-8219100 Improve do_collection_pause_at_safepoint
-
- Resolved
-
- relates to
-
JDK-8254164 G1 only removes self forwarding pointers for last collection set increment
-
- Closed
-
-
JDK-8252658 G1: Do not consider G1HeapWastePercent during region selection within a gc
-
- Resolved
-
-
JDK-8213890 Implementation of JEP 344: Abortable Mixed Collections for G1
-
- Resolved
-
-
JDK-8218920 Scan HCC should be on the same level as Update RS etc. in the log
-
- Resolved
-
-
JDK-8282484 G1: Predicted old time in log always zero
-
- Resolved
-
-
JDK-8222426 vmTestbase/vm/gc/containers/Combination02 SIGSEGVs during optional evacuation
-
- Closed
-
-
JDK-8222492 G1 unnecessarily scans remembered set cards for regions that already have been evacuated
-
- Closed
-
-
JDK-8225418 G1: region attribute remembered set state disagrees with actual remembered set state
-
- Closed
-
-
JDK-8227695 assert(pss->trim_ticks().seconds() == 0.0) failed: Unexpected partial trimming during evacuation
-
- Closed
-
-
JDK-8222105 Add "use_" prefix to G1Policy::adaptive_young_list_length
-
- Resolved
-
-
JDK-8224160 Move G1RemSetScanClosure into g1RemSet.cpp file
-
- Resolved
-
-
JDK-8190269 JEP 344: Abortable Mixed Collections for G1
-
- Closed
-
-
JDK-8227665 Clearing collection set candidates takes a significant amount of time
-
- Closed
-