RFC: One marking bitmap

Roman Kennke rkennke at redhat.com
Thu Oct 5 14:53:48 UTC 2017


Am 05.10.2017 um 16:51 schrieb Aleksey Shipilev:
> On 10/05/2017 12:24 PM, Roman Kennke wrote:
>> The main problem has been concurrent class unloading. When we do this, we unload classes that may
>> still be referenced by unreachable objects in non-cset regions. When we try to iterate such a region
>> object-by-object, we may hit such an object with a dangling Klass* and crash. Always having a valid
>> bitmap around means we can iterate based on actual liveness info, which guarantees us to skip dead
>> objects with dangling Klass*.
> I do not understand this explanation. Actually, I don't understand how second bitmap avoids this
> issue. One marking bitmap is *also* valid after class unloading (during final mark) had happened,
> and we can iterate over it safely. Can you do the more verbose example?

I probably missed the part where we would cancel marking and don't have 
a valid marking bitmap to support safe iteration that skips unreachable 
objects...

Roman


More information about the shenandoah-dev mailing list