RFR (S): 8003237: G1: Reduce unnecessary (and failing) allocation attempts when handling an evacuation failure

Thomas Schatzl thomas.schatzl at oracle.com
Mon Aug 3 12:35:20 UTC 2015

Hi all,

  can I have reviews for this small change that improves evacuation
failure handling by short-cutting copy_to_survivor_space() when there is
no more space left?

In effect this makes the parallel phase during GC have the same
performance as if there is no evacuation failure, and I could not
measure regressions in the normal case either.

The change implements two things: first, notice when there is no more
space left in the last gen (i.e. old), and if so, short-cut
ParScanThreadState::copy_to_survivor_space(). The other change is to not
try to ask the free list for new regions if it's empty to avoid taking
the lock in the time window between the first few evac failures and when
space is completely empty.

There is still the somewhat heavyweight cleanup phases after evacuation

jprt, lots of performance measurements with and without this change
compiled in


More information about the hotspot-gc-dev mailing list