RFR: Single GCTimer shared by all operations
Aleksey Shipilev
shade at redhat.com
Wed Jan 31 11:42:49 UTC 2018
On 01/31/2018 12:40 PM, Roman Kennke wrote:
> Am 31.01.2018 um 12:28 schrieb Aleksey Shipilev:
>> http://cr.openjdk.java.net/~shade/shenandoah/single-gc-timer/webrev.01/
>>
>> Degenerated GC exposed a wrinkle in our GCTimer handling. Full GC has the separate GCTimer (for
>> legacy reasons?). All other operations run with GCTimer from ShHeap. Degenerated GC is peculiar: it
>> may start as the usual operation, but then *continue* as upgraded to Full GC. GCTimers then start to
>> misbehave with asserts like:
>>
>> # assert(_phases->length() <= 1000) failed: Too many recored phases?
>>
>> The solution/cleanup is to use a single GCTimer, basically letting Full GC using the GCTimer from
>> ShHeap.
>>
>> Testing: hotspot_gc_shenandoah
>>
>> Thanks,
>> -Aleksey
>>
>
> Seems good. Is there a difference between STWGCTimer and ConcurrentGCTimer that may fall on our feet?
I don't think so.
The bigger question if that fixes the failures that you see in tests? Because I cannot reproduce the
failure on my local machine.
-Aleksey
More information about the shenandoah-dev
mailing list