RFR: 8240239: Replace ConcurrentGCPhaseManager

Kim Barrett kim.barrett at oracle.com
Fri Feb 28 21:48:08 UTC 2020


Please review this change which removes the ConcurrentGCPhaseManager
class and replaces it with ConcurrentGCBreakpoints.

This is joint work with Per Liden.

This change provides a client API, used by WhiteBox.  The usage model
for a client is

(1) Acquire control of concurrent collection cycles.

(2) Do work that must be performed while the collection cycle is in a
known state.

(3) Request the concurrent collector run to a named "breakpoint", or
run to completion, and then hold there, waiting for further commands.

(4) Optionally goto (2).

(5) Release control of concurrent collection cycles.

Tests have been updated to use the new WhiteBox API.

This change provides implementations of the new mechanism for G1 and
ZGC.  A Shenandoah implementation is being left to others, but we
don't see any obvious reason for it to be difficult.

CR:
https://bugs.openjdk.java.net/browse/JDK-8240239

Webrev:
https://cr.openjdk.java.net/~kbarrett/8240239/open.03/

To possibly simplify the review, the open patch is also provided as a
pair of patches, one for removing the old mechanism and a second to
add the new mechanism.

https://cr.openjdk.java.net/~kbarrett/8240239/remove_phase_control.03/ 
Removes ConcurrentGCPhaseManager and its G1 implementation, except
that tests are not modifed.

https://cr.openjdk.java.net/~kbarrett/8240239/control.03/
Adds ConcurrenGCBreakpoints, with G1 and ZGC implementations, and
updates tests to use it.

Testing:
mach5 tier1-5, which includes all the updated and new tests.



More information about the hotspot-gc-dev mailing list