RFR: Interleave partial GCs with concurrent GCs
Roman Kennke
rkennke at redhat.com
Thu Mar 30 19:44:38 UTC 2017
Am 30.03.2017 um 21:22 schrieb Aleksey Shipilev:
> On 03/30/2017 08:03 PM, Aleksey Shipilev wrote:
>> On 03/30/2017 07:27 PM, Roman Kennke wrote:
>>> Ok, the interleave part is misleading. It does not actually interleave
>>> concurrent with partial GCs. It either does one or the other in each GC
>>> phase.
>>>
>>> Also, we might need the matrix that is built by concurrent marking, to
>>> select which regions need updating during update-refs. Better to leave
>>> that code in. Which makes the patch fairly concise:
>>>
>>> http://cr.openjdk.java.net/~rkennke/partial-conc-gc/webrev.01
>> OK.
> This SEGVs for me. In my workload, the very first cycle is partial, but marking
> bitmap is not available yet. This band-aids the issue, but I am not sure it
> should be fixed like that:
> http://cr.openjdk.java.net/~shade/shenandoah/bandaid-first-partial.patch
No it shouldn't :-)
When there is no marking bitmap, it should happily fall back to
size-based iteration.
The issue here is that we're encountering a humongous continuation, and
marked_object_iterate() cannot handle it.
This modification puts an assert in marked_object_iterate() and skips
humongous continuations. (They will be processed by the oop_iterate()
call in the humongous start anyway).
http://cr.openjdk.java.net/~rkennke/partial-conc-gc/webrev.02/
<http://cr.openjdk.java.net/%7Erkennke/partial-conc-gc/webrev.02/>
Roman
More information about the shenandoah-dev
mailing list