RFR: 8196586: Remove use of deprecated finalize methods from javafx property objects

Kevin Rushforth kcr at openjdk.java.net
Tue Feb 18 20:12:18 UTC 2020


On Sun, 16 Feb 2020 01:24:43 GMT, Nir Lisker <nlisker at openjdk.org> wrote:

>> I'll be the 2nd reviewer.
> 
>> the referent to the created property object has been garbage collected before the `finalize` method is called
> 
> I'm confused. What is that referent exactly and why is it guaranteed to have been GC'd before finalization?

> > the referent to the created property object has been garbage collected before the `finalize` method is called
> 
> I'm confused. What is that referent exactly and why is it guaranteed to have been GC'd before finalization?

I meant the referent of the `WeakReference` to the constructed `Property` object on which the `finalize` method is being called.

The `asObject` and `xxxxxProperty` methods create a bidirectional binding, which uses weak references to both the original `Property` object and the newly constructed `Property` object. The `finalize` method is on the newly-constructed `Property`. By the time that finalize method is called, the JVM guarantees that no other reference to that  `Property` object exists. From the API docs of `Object::finalize`:

_The general contract of finalize is that it is invoked if and when the Java™ virtual machine has determined that there is no longer any means by which this object can be accessed by any thread that has not yet died, except as a result of an action taken by the finalization of some other object or class which is ready to be finalized._

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

PR: https://git.openjdk.java.net/jfx/pull/113


More information about the openjfx-dev mailing list