RFR(S): 8005032: G1: Cleanup serial reference processing closures in concurrent marking

John Cuthbertson john.cuthbertson at oracle.com
Tue Jan 8 18:59:28 UTC 2013


Hi Everyone,

Can I have a couple of volunteers review the changes for this CR - the 
webrev can be found at: http://cr.openjdk.java.net/~johnc/8005032/webrev.0/

Summary:
The previous serial keep-alive and complete-gc reference processing oop 
closures used during concurrent marking operated directly on the global 
marking stack while the parallel closures used the local task queues 
from the concurrent marking task objects (using the global marking stack 
as a backing store). Additionally the parallel keep-alive closure also 
drained the local task queue after processing a given number of references.

These changes make the serial reference processing code use the same oop 
closures as the parallel code. This will reduce the likelihood of 
hitting a marking stack overflow while processing the discovered 
references during the remark phase.

Testing:
GC test suite with a low IHOP and marking verification.
Test case for 8004812 (Kitchensink) with  a very low marking stack size 
(4K entries) and heap verification, and both with and without 
ParallelRefProcEnabled and ParallelGCThreads=0.
jprt.

Thanks,

JohnC



More information about the hotspot-gc-dev mailing list