Finalizer being run while class still in use (escape analysis bug)

Kim Barrett kim.barrett at
Thu Oct 11 17:24:19 UTC 2018

> On Oct 11, 2018, at 5:29 AM, Andrew Haley <aph at> wrote:
> On Wed, Oct 10, 2018 at 9:53 AM Kim Barrett <kim.barrett at> wrote:
>> Finalization was deprecated in JDK 9 (*).  There's an ongoing (though
>> progressing slowly) process of eliminating its usage in the JDK.
>> Sometime after that it may go away entirely, or perhaps require some
>> sort of explicit opt-in, making it possible to eliminate various GC
>> overheads associated with it.
>> (*) Use PhantomReference, or a helper like java.lang.ref.Cleaner.
>> Though that change the liveness question in this thread.
> It doesn't matter whether finalization is used or PhantomReferences,
> or whatever. The problem of "early" collection remains the same on
> every possible mechanism which relies on the GC to trigger cleanup, so
> reachabilityFence still has to be used to prevent early collectiona
> from happening.

Correct, and sorry for the “typo”; that was supposed to be 
  "Though that doesn’t change the liveness question in this thread."

More information about the jdk-dev mailing list