RFR (M/L): 8057003: Large reference arrays cause extremely long synchronization times

Thomas Schatzl thomas.schatzl at oracle.com
Fri Oct 28 13:09:10 UTC 2016


Hi all,

  I would like to have reviews for the following change that fixes long
synchronization times for G1 when marking large objArrays. We split
large objArrays into a header and a continuation, so that complete
processing of the entire array is not required before a GC pause can be
started.

Also fixes most cases of mark stack overflows ("concurrent-mark-reset-
for-overflow") ultimately causing full gcs by not pushing the entire
objArray on the mark stack at once.

There is the enhancement, JDK-8168467, suggested in an internal review,
to change the type of the mark stack elements to "not an oop", as this
is not the case anymore - there may be continuations on it. I decided
to split this out because that change impacts a lot more places (the
entire mark stack handling) unrelated to this mechanism in the code.

CR:
https://bugs.openjdk.java.net/browse/JDK-8057003
Webrev:
http://cr.openjdk.java.net/~tschatzl/8057003/webrev/
Testing:
jprt, various benchmarks, vm.gc, gc-nightly

This change alredy has its FC extension approved.

Thanks,
  Thomas




More information about the hotspot-gc-dev mailing list