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

Peter Levart plevart at openjdk.java.net
Thu Nov 18 15:08:45 UTC 2021


On Thu, 18 Nov 2021 14:53:38 GMT, Peter Levart <plevart at openjdk.org> wrote:

>> I think @shipilev asks a good question. This could be done completely in the VM without the changes to j.l.ref.Finalizer. The CLI option is for experimenting, at least in the short term, and should be benign to have the Finalizer thread running, it just won't do anything.
>
> Or, you could move the static initialization block that statrts the finalizer thread into the Finalizer.FinalizerThread class itself and then arrange for that class to be initialized explicitly immediately after the Finalizer class, but conditionally, only if the option to disable finalization was not specified...
> This way the Finalizer class could still be initialized early, but the thread would not be started if it is not needed.

If you then need this "flag" in the assert of registerFinalizer and runFinalization, you could use unsafe.shouldBeInitialized(Finalizer.FinalizerThread.class) as a means to find out whether the flag was set or not...

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

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


More information about the core-libs-dev mailing list