RFR: JDK-8149925 We don't need jdk.internal.ref.Cleaner any more
Roger Riggs
Roger.Riggs at Oracle.com
Fri Apr 1 21:51:21 UTC 2016
Hi Peter,
Thanks for the diffs to look at.
Two observations on the changes.
- The Cleaner instance was intentionally and necessarily different than
the CleanerImpl to enable
the CleanerImpl and its thread to terminate if the Cleaner is not longer
referenced.
Folding them into a single object breaks that.
Perhaps it is not too bad for ExtendedCleaner to subclass CleanerImpl
with the cleanup helper/supplier behavior
and expose itself to Bits. There will be fewer moving parts. There is
no need for two factory methods for
ExtendedCleaner unless you are going to use a separate ThreadFactory.
- The Deallocator (and now Allocator) nested classes are identical, and
there is a separate copy for each
type derived from the Direct-X-template. But it may not be worth fixing
until the rest of it is settled to avoid
more moving parts.
I don't have an opinion on the code changes in Reference, that's
different kettle of fish.
More next week.
Have a good weekend, Roger
On 4/1/2016 12:46 PM, Peter Levart wrote:
>
>
> On 04/01/2016 06:08 PM, Peter Levart wrote:
>>
>>
>> On 04/01/2016 05:18 PM, Peter Levart wrote:
>>> @Roger:
>>>
>>> ...
>>>
>>> About entanglement between nio Bits and
>>> ExtendedCleaner.retryWhileHelpingClean(). It is the same level of
>>> entanglement as between the DirectByteBuffer constructor and
>>> Cleaner.register(). In both occasions an action is provided to the
>>> Cleaner. Cleaner.register() takes a cleanup action and
>>> ExtendedCleaner.retryWhileHelpingClean() takes a retriable
>>> "allocating" or "reservation" action. "allocation" or "reservation"
>>> is the opposite of cleanup. Both methods are encapsulated in the
>>> same object because those two functions must be coordinated. So I
>>> think that collocating them together makes sense. What do you think?
>>
>> ...to illustrate what I mean, here's a variant that totally untangles
>> Bits from Cleaner and moves the whole Cleaner interaction into the
>> DirectByteBuffer itself:
>>
>> http://cr.openjdk.java.net/~plevart/jdk9-dev/removeInternalCleaner/webrev.13.part2/
>>
>>
>> Notice the symmetry between Cleaner.retryWhileHelpingClean :
>> Cleaner.register and Allocator : Deallocator ?
>>
>>
>> Regards, Peter
>>
>
> And here's also a diff between webrev.12.part2 and webrev.13.part2:
>
> http://cr.openjdk.java.net/~plevart/jdk9-dev/removeInternalCleaner/webrev.diff.12to13.part2/
>
>
> Regards, Peter
>
More information about the core-libs-dev
mailing list