-
Enhancement
-
Resolution: Fixed
-
P4
-
20
-
b23
Among other things, G1Policy::record_concurrent_refinement_stats() sets pending_cards_at_gc_start to the number of cards in the dirty card queue set. However, that doesn't include cards in the thread buffers.
record_concurrent_refinement_stats is called by record_young_collection_start. The cards in thread buffers are flushed to the DCQS by concatenate_logs, which is called later by pre_evacuate_collection_set. So the recorded pending cards value doesn't include the cards in thread buffers, but should. This may effect various later calculations using that information, since it will be less accurate than it could be.
record_concurrent_refinement_stats is called by record_young_collection_start. The cards in thread buffers are flushed to the DCQS by concatenate_logs, which is called later by pre_evacuate_collection_set. So the recorded pending cards value doesn't include the cards in thread buffers, but should. This may effect various later calculations using that information, since it will be less accurate than it could be.
- relates to
-
JDK-8296419 [REDO] JDK-8295319: pending_cards_at_gc_start doesn't include cards in thread buffers
- Resolved