RFC: One marking bitmap
Aleksey Shipilev
shade at redhat.com
Thu Oct 5 14:57:25 UTC 2017
On 10/05/2017 04:53 PM, Roman Kennke wrote:
> 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...
But if we *do* cancel the marking, we either follow to degenerate final mark that completes the
bitmap, or we slide to Full GC. Where's the issue? I need verbose example. And you probably need it
too! And anyone who would be reading this thread years later -- too!
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list