Today, the claim value of a CLD is logically a boolean, stored as an int. Either a CLD is claimed, or not claimed. This is used by the GC to see if oops_do can be skipped on the CLD, because its handles have already been marked.
With ZGC supporting concurrent class unloading, it the CLD holder can be marked finalizably reachable first, and afterwards strongly reachable. This requires 2 claim bits in the CLD: one for claiming it for strongly marking the oop handles, and one for finalizably marking the oop handles.
With ZGC supporting concurrent class unloading, it the CLD holder can be marked finalizably reachable first, and afterwards strongly reachable. This requires 2 claim bits in the CLD: one for claiming it for strongly marking the oop handles, and one for finalizably marking the oop handles.
- relates to
-
JDK-8235586 Shenandoah: Traversal GC still uses old CLD::oops_do API
-
- Resolved
-