Hi Hans,

Can you suggest how that would be expressed? The advice would seem to have some complex conditions.

Would it be the case that a caller using a reference to any resource held by a finalizable object must use reachabilityFence to ensure that the resource can not be cleaned up while it is planning to use the resource?

Is there a citation that can supply the context and background for a warning or is the explanation
in reachabilityFence sufficient?

Roger


On 3/31/2017 1:05 PM, Hans Boehm wrote:
In my view, the primary reason to prefer Cleaner or PhantomReference is safety (no accidental access to previously finalized objects, which usually turn into dangling pointer dereferences with JNI). Flexibility and efficiency also matter, but I would put them second and third.

Can we add a warning that it is almost never safe to override finalize() without use of reachabilityFence()?


On Fri, Mar 31, 2017 at 6:55 AM, Roger Riggs <roger.ri...@oracle.com <mailto:roger.ri...@oracle.com>> wrote:

    The webrev for deprecating finalize has been updated:
     - to improve the advice existing JDK subclasses overriding
    finalize provides in @deprecated javadoc,
     - to expand Object.finalize() javadoc to reinforce the correct
    use of super.finalize() by subclasses,
     - and to remove redundant @SuppressWarnings annotations.


    Please review and comment.

    Webrev:
    http://cr.openjdk.java.net/~rriggs/webrev-finalize-deprecate-8165641/
    <http://cr.openjdk.java.net/%7Erriggs/webrev-finalize-deprecate-8165641/>

    Issue:
    https://bugs.openjdk.java.net/browse/JDK-8165641
    <https://bugs.openjdk.java.net/browse/JDK-8165641>

    Thanks, Roger




Reply via email to