RFR: JDK-8276422 Add command-line option to disable finalization [v3]

Mandy Chung mchung at openjdk.java.net
Thu Nov 18 22:42:39 UTC 2021


On Thu, 18 Nov 2021 22:04:52 GMT, Stuart Marks <smarks at openjdk.org> wrote:

>> I renamed the function to `is_finalization_enabled` per previous comment, and I also made these cleanups.
>
> Regarding using system properties, my initial prototype did this in the launcher, and it did run into the problem that the Finalizer class is initialized before system properties are available. That's why I created the Holder class, so that reading the property could be delayed until the first upcall to Finalizer::register. I suppose the initialization of Finalizer could be moved later, but that seems more invasive.
> 
> The flag needs to be available in the VM in order to avoid upcalls for instances-with-finalizers in the first place. Alan had [suggested](https://bugs.openjdk.java.net/browse/JDK-8276422?focusedCommentId=14456185&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14456185) moving the argument processing into the VM, and David suggested putting the flag into InstanceKlass, which seems a sensible place to me. It's also reasonably accessible there to GC implementations, should they want to inspect it.

> Alan had suggested moving the argument processing into the VM, and David suggested putting the flag into InstanceKlass, which seems a sensible place to me. It's also reasonably accessible there to GC implementations, should they want to inspect it.

That's still all good.  What I meant is for the VM to add a private system property (not the launcher) as to pass the flag to the library code.  The precedence is like `sun.nio.MaxDirectMemorySize`  or `java.lang.Integer.IntegerCache.high`.

-------------

PR: https://git.openjdk.java.net/jdk/pull/6442


More information about the core-libs-dev mailing list