RFR (M): 8087198: G1 card refinement: batching, sorting

Man Cao manc at google.com
Tue Nov 12 02:26:29 UTC 2019

Hi all,

Can I have reviews for an updated implementation for batching card
RFE: https://bugs.openjdk.java.net/browse/JDK-8087198
Webrev: https://cr.openjdk.java.net/~manc/8087198/webrev.00/

Old review thread is:
Major differences from the 2015 webrev:
 - New version does not save the MemRegions for the cards in a buffer. I
noticed considerable memory overhead with BigRamTester if we save the
 - New version handles SuspendibleThreadSetJoiner::should_yield() in a more
timely fashion. Instead of forcing refining all buffered cards, the new
version can abandon the buffered cards.
 - New version only batches and sorts the cards, not joining and
prefetching. I have not investigated whether joining and prefetching help
much. I think it is OK to investigate them in a separate RFE later.
Please refer to the RFE page for some performance results.

For correctness, tested with:
 - Submit repo: tier1
 - Local fastdebug build: tier2
 - Fastdebug stress testing DaCapo h2 and BigRamTester with following
option combinations in addition to -XX:+VerifyRememberedSets:
   default options
  -XX:-G1UseAdaptiveConcRefinement -XX:G1UpdateBufferSize=4
-XX:G1ConcRefinementGreenZone=0 -XX:G1ConcRefinementYellowZone=1


More information about the hotspot-gc-dev mailing list