RFR 9: JDK-8146028 : Common Cleaner for finalization replacements in java.base
daniel.fuchs at oracle.com
Tue Jan 5 18:45:16 UTC 2016
Some early feedback:
I see that prior to your changes, MeteredStream.close() would
be called by finalize.
This will no longer be the case after
I see that MeteredStream has a subclass (KeepAliveStream) that
overrides close() - so KeepAliveStream probably requires a cleanup
as well - doesn't it?
Finally I'd suggest making the variable 'pi' final - since you're
passing that to the lambda you don't want to allow its value to
be modified afterwards (fortunately it's not - and I believe it
should be good to ensure it won't be).
I haven't looked at the other classes yet...
On 05/01/16 19:24, Roger Riggs wrote:
> The follow on work to adding the Cleaner is to replace uses of
> finalization with uses of the Cleaner.
> For the 'easy' cases in the java.base module, it is useful to introduce
> a private Cleaner for the
> java.base module. It is proposed to be held weakly, to allow it to
> terminate on a lightly loaded
> Webrev for Review:
> The 2nd step is using the Cleaner.
> - Empty finalize methods should (I think) be removed; but since they
> are part of the public spec
> the process needs two full releases; so the proposal is to deprecate
> them first.
> (The JEP 277 necessary changes will be updated when JEP 277
> semantics are finalized)
> - In a few cases, the code in the finalizer is redundant and if removed
> would allow
> an optimization of the handling of the finalizer and future removal
> of the finalize method.
> Thanks for comments and suggestions, Roger
More information about the core-libs-dev