RFR 9: 8138696 : java.lang.ref.Cleaner - an easy to use alternative to finalization
Lance Andersen
lance.andersen at oracle.com
Wed Dec 2 21:09:04 UTC 2015
Hi Roger,
Should the javadocs in the Cleaner methods include NPE given they use Objects.requireNonNull?
Best
Lance
On Dec 2, 2015, at 3:23 PM, Roger Riggs <Roger.Riggs at oracle.com> wrote:
> Please review the java.lang.ref.Cleaner and tests following the recommendation to simplify the public
> interface to support only phantom cleanup.
>
> Webrev:
> http://cr.openjdk.java.net/~rriggs/webrev-cleaner-8138696/
>
> Javadoc:
> http://cr.openjdk.java.net/~rriggs/cleaner-doc/index.html
>
> Thanks, Roger
>
>
> On 11/23/2015 5:32 PM, mark.reinhold at oracle.com wrote:
>> ( Finally getting back to this, after too many weeks of travel ... )
>>
>> 2015/10/20 11:28 -0700, roger.riggs at oracle.com:
>>> Sorry for the silence, JavaOne preparations and the availability of
>>> folks who wanted to review have stretched things out.
>>>
>>> The Cleaner API was very simple and saw feature creep as the ideas for
>>> how it might be used were explored. There are concerns about
>>> committing to supporting subclassable CleanableReferences in all
>>> future JDK versions before there had been a chance to see how if they
>>> would be useful and necessary to address the need to reduce the use of
>>> finalization within the OpenJDK and beyond.
>>>
>>> ...
>>>
>>> Updated Javadoc:
>>> http://cr.openjdk.java.net/~rriggs/cleaner-doc/
>>>
>>> Updated Webrev:
>>> http://cr.openjdk.java.net/~rriggs/webrev-cleaner-8138696/
>> I'm very happy to see this API return to something like its original
>> simple form, but I think it can be simplified even further.
>>
>> We have a very strong need for phantom-ref-based cleaners, so as to
>> discourage people from relying upon flaky finalization. The arguments in
>> support of the weak and soft forms have, by contrast, been rather weak
>> (and soft?). I don't think it's right to bake methods into a core API
>> based on just a couple of hypothetical use cases. I'd much rather see
>> the Cleaner::{phantom,soft,weak}Cleanable methods reduced to a single
>> register method,
>>
>> Cleaner.Cleanable register(Object, Runnable);
>>
>> which would create the phantom form only. If strong justification for
>> the other forms arise then we can generalize this later, either to
>> distinct register{Soft,Weak} methods or, perhaps, to a method that takes
>> a type token.
>>
>> - Mark
>
Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering
1 Network Drive
Burlington, MA 01803
Lance.Andersen at oracle.com
More information about the core-libs-dev
mailing list