Disable heap iteration for Shenandoah in SA
Roman Kennke
rkennke at redhat.com
Wed Nov 28 19:25:05 UTC 2018
Hi Aleksey,
>>> Wrong warning message, should be "Shenandoah" :)
>>>
>>> 374 System.err.println("Warning: Operation not supported with ZGC");
>>>
>>> Hold on, let me try to detect class unloading flags in SA, and conditionalize on that.
>>
>> Ok, I'll wait. :-)
>>
>> That would be +ClassUnloadingWithConcurrentMark only. +ClassUnloading
>> (at full-gc) should be good.
>
> Dang. I don't think even +ClassUnloading would be enough. Because we can also have broken reference
> fields in the dead objects. Our "accurate" bitmap-if-below-TAMS iteration code in native GC handles
> both old classes and reference fields correctly, but unless we teach SA code where the bitmap is, we
> cannot guarantee not touching dead references. I remember native VM crashes when we touched dead
> objects.
>
> So, it seems the lesser evil is to disable the SA iteration wholesale, as Roman originally
> suggested, and then consider exposing bitmaps for proper iteration.
I'd rather do a reasonable iteration interface to SA, that uses
CH::object_iterate(). In any case, this needs careful consideration.
Shall I commit my last proposed patch? Or only cut it into the
upstreaming patch, and leave sh/jdk alone for now?
Roman
More information about the shenandoah-dev
mailing list