Finalizer calls Reference.get() from the Finalizer to acquire the finalizee. Concurrent reference processing GCs like Shenandoah and ZGC would return NULL for unreachable referents, and thus would not call finalize() on them.
ZGC works around this by fixing the referent before enqueuing, so that the barrier would take the fast-path, but Shenandoah cannot do this.
ZGC works around this by fixing the referent before enqueuing, so that the barrier would take the fast-path, but Shenandoah cannot do this.
- blocks
-
JDK-8256011 Shenandoah: Don't resurrect finalizably reachable objects
- Resolved
- relates to
-
JDK-8256370 Add asserts to Reference.getInactive()
- Resolved