RFR: Adaptive accounts trashed cset twice

Aleksey Shipilev shade at redhat.com
Sat Sep 23 10:35:19 UTC 2017


http://cr.openjdk.java.net/~shade/shenandoah/heuristics-adaptive-twice-cset/webrev.01/

Recent improvement in adaptive heuristics was incomplete due to a simple overlook: we account the
cset from the previous run twice. We do it "normally" with trashing the cset, and accounting it in
trash/free. We do it second time via _bytes_in_cset. _bytes_in_cset is needed for polling potential
free before actual trashing happens in should_start_conc_mark, but not in the actual cset construction.

This fix makes LRUFragger survive with even further LDSes, when current (bad) code overshoots free
space and runs into OOME-during-evac. This is not a regression per se, because on non-overloaded
heap this matters much less, if at all.

Testing: hotspot_gc_shenandoah, benchmarks

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list