8176565: G1 Does not perform heap verification after remark with VerifyAfterGC

Mikael Gerdin mikael.gerdin at oracle.com
Mon Mar 13 15:37:59 UTC 2017

Hi Aleksey,

On 2017-03-13 16:27, Aleksey Shipilev wrote:
> On 03/13/2017 03:58 PM, Mikael Gerdin wrote:
>> Hi all,
>> Please review this small change to when G1 performs heap verification.
>> Background to this change is that it is fairly common knowledge that in order to
>> rule out GC bugs you should run with -XX:+VerifyBeforeGC -XX:+VerifyAfterGC.
>> In order to make it easier for people to get the kind of heap verification they
>> expect we should have G1 perform a verification at the end of the remark phase
>> similar to what CMS does.
>> Previously this verification has only been enabled with -XX:+VerifyDuringGC for
>> G1 but that is a lesser known flag and I think we should try to make it easier
>> for our users to get the verification passes they expect.
>> This is a low-risk fix and it will be good to have in 9.0 for debugging purposes.
>> Webrev: http://cr.openjdk.java.net/~mgerdin/8176565/webrev.0/
> While I agree this is good change, I wonder if you want a global verification
> option that does not mention any particular GC phase, e.g. -XX:+VerifyGC. Then,
> external users can rely on GC developers to put the verification points within
> the GC, where they think verification is needed. (We do this in Shenandoah with
> -XX:+ShenandoahVerify).
> That flag may just ergonomically enable all three verification options:
> -XX:+Verify{Before,After,During}GC.

That might make sense but in trying to get this in to 9 I'd prefer to 
keep the change as simple as possible.

We should look into how we handle verification as a future RFE. There 
are also the VerifySubSet and VerifyRememberedSets flags to consider.


> Thanks,
> -Aleksey.

More information about the hotspot-gc-dev mailing list