RFR (S): 8153170: Card Live Data does not correctly handle eager reclaim
thomas.schatzl at oracle.com
Wed Apr 13 15:42:54 UTC 2016
can I have reviews for the following change that makes the
calculation of the card liveness data in regions that are reclaimed (by
e.g. eager reclaim) exact.
The card live data incorrectly considers these regions as completely
live, preventing reclaim during the concurrent cleanup phase (as the
recorded live bytes may be > 0 then).
The mechanism is quite simple: detect these reclamations, and then
during the card live data finalization in a stw phase recalculate
liveness of affected regions. Detection works by updating a region's gc
time stamp every time the region is reclaimed: if that time stamp is
larger than the time stamp gathered when the cleanup phase starts, we
know that the region has been modified in the meantime.
This change also enables a more exact verification of the calculations,
which is in itself a good reason for this change imo.
Exact calculation of card live data in general is also necessary for
JDK-8151846 that contains code for remembered set changes JDK-8017163.
More information about the hotspot-gc-dev